Files
kepfeldolgozas/ora6/proj1/main.cpp
2025-10-30 17:36:47 +01:00

68 lines
1.5 KiB
C++

#include "histo.h"
#include "opencv2/imgcodecs.hpp"
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
void Roberts(const Mat& img){
Mat g, gx, gy, g2, edge, edge2;
gx = Mat::zeros(img.size(), CV_16S);
gy = Mat::zeros(img.size(), CV_16S);
for (int i = 0; i < img.rows -1; i++) {
for (int j = 0; j < img.cols -1; j++) {
gx.at<short>(i,j) = img.at<uchar>(i,j) - img.at<uchar>(i+1, j+1);
gy.at<short>(i,j) = img.at<uchar>(i,j+1) - img.at<uchar>(i+1, j);
}
}
g = cv::abs(gx) + cv::abs(gy);
convertScaleAbs(g, g2);
threshold(g2, edge, 0, 255, THRESH_OTSU);
threshold(g2, edge2, 0, 255, THRESH_TRIANGLE);
imshow("edge", edge);
imshow("edg2", edge2);
//imshow("g", g * 255);
//imshow("gx", gx * 255);
//imshow("gy", gy * 255);
}
void sobel(const Mat img){
Mat g, g2, gx, gy;
Sobel(img, gx, CV_32F, 1,0);
Sobel(img, gy, CV_32F, 0,1);
//g = cv::abs(gx) + cv::abs(gy);
//cv::sqrt(gx.mul(gx) + gy.mul(gy));
convertScaleAbs(g, g2);
//imshow("gx", gx / 255);
//imshow("gx", gy / 255);
//imshow("g2", g2);
Mat dest;
Laplacian(img, dest, CV_16S, 3);
convertScaleAbs(dest, dest);
imshow("dest", dest);
waitKey(0);
}
int main(){
Mat img = imread("../go2.png", IMREAD_GRAYSCALE);
imshow("ered", img);
//Roberts(img);
sobel(img);
while(waitKey(3) != 'q');
return 0;
}