#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
Mat Robets(Mat &SrcImage)
{
Mat DstImage = SrcImage.clone();
int nRows = SrcImage.rows;
int nCols = SrcImage.cols;
for (int i = 0; i < nRows - 1; ++i)
{
for (int j = 0; j < nCols - 1; ++j)
{
int t1 = (SrcImage.at<uchar>(i, j) - SrcImage.at<uchar>(i + 1, j + 1))*
(SrcImage.at<uchar>(i, j) - SrcImage.at<uchar>(i + 1, j + 1));
int t2 = (SrcImage.at<uchar>(i + 1, j) - SrcImage.at<uchar>(i, j + 1))*
(SrcImage.at<uchar>(i + 1, j) - SrcImage.at<uchar>(i, j + 1));
DstImage.at<uchar>(i, j) = (uchar)(abs(t1)+ abs(t2));
}
}
return DstImage;
}
int main()
{
Mat SrcImage = imread("22.jpg");
namedWindow("原图", WINDOW_NORMAL);
imshow("原图", SrcImage);
Mat GrayImage;
cvtColor(SrcImage, GrayImage, COLOR_RGB2GRAY);
Mat Image = Robets(GrayImage);
namedWindow("edge", WINDOW_NORMAL);
imshow("edg
基本边缘检测算子—Roberts
最新推荐文章于 2024-09-19 01:00:00 发布