C++写一个边缘检测的程序
时间: 2023-12-27 22:16:41 浏览: 18
以下是一个简单的C++边缘检测程序,使用Sobel算子来检测图像的边缘:
```
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图像
Mat image = imread("lena.jpg", IMREAD_GRAYSCALE);
// 声明Sobel算子
Mat sobel_x, sobel_y;
Sobel(image, sobel_x, CV_32F, 1, 0);
Sobel(image, sobel_y, CV_32F, 0, 1);
// 计算梯度幅值
Mat gradient;
magnitude(sobel_x, sobel_y, gradient);
// 归一化梯度幅值,取绝对值
normalize(gradient, gradient, 0, 1, NORM_MINMAX);
convertScaleAbs(gradient, gradient);
// 显示结果
imshow("Original Image", image);
imshow("Sobel Edge Detection", gradient);
waitKey(0);
return 0;
}
```
请注意,这只是一个简单的示例程序,实际的边缘检测程序可能需要更多的细节处理和参数调整来达到最佳效果。