以用c++利用opencv写一个程序 实现读取输入本地的图片进行卷积输出结果吗
时间: 2024-04-29 20:23:43 浏览: 14
可以,以下是一个示例程序:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图片
Mat image = imread("lena.jpg", IMREAD_GRAYSCALE);
if (image.empty())
{
cerr << "Failed to read image!" << endl;
return -1;
}
// 定义卷积核
Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
// 进行卷积
Mat result;
filter2D(image, result, -1, kernel);
// 显示结果
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", image);
namedWindow("Result", WINDOW_NORMAL);
imshow("Result", result);
waitKey(0);
return 0;
}
```
该程序读取名为"lena.jpg"的灰度图像,定义一个3x3的卷积核,使用`filter2D`函数进行卷积,并将结果显示出来。在实际应用中,可以根据需要修改卷积核的大小和内容,以实现不同的卷积效果。