可以用c++利用opencv写一个程序 实现读取输入的图片进行卷积输出结果吗
时间: 2024-05-01 11:16:19 浏览: 14
可以的,下面是一个简单的示例代码:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << "Usage: ./convolution <image_path>" << endl;
return -1;
}
// Load image and convert to grayscale
Mat image = imread(argv[1], IMREAD_GRAYSCALE);
if (image.empty())
{
cout << "Could not read image: " << argv[1] << endl;
return -1;
}
// Define kernel for convolution
Mat kernel = (Mat_<float>(3,3) << -1,-1,-1,-1,8,-1,-1,-1,-1);
// Perform convolution using filter2D function
Mat result;
filter2D(image, result, -1, kernel);
// Display input and output images
namedWindow("Input", WINDOW_NORMAL);
namedWindow("Output", WINDOW_NORMAL);
imshow("Input", image);
imshow("Output", result);
waitKey(0);
return 0;
}
```
该程序使用OpenCV库读取输入的图片,并定义一个卷积核进行卷积操作,最后显示输入图像和卷积后的输出图像。你可以根据需要修改卷积核和其他参数以获得所需的结果。