膨胀后的图像和腐蚀后的图像相减c语言
时间: 2024-03-13 17:44:15 浏览: 61
可以使用OpenCV库来实现膨胀和腐蚀操作,并且可以通过OpenCV提供的函数subtract()来对两幅图像进行相减操作。以下是实现的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取原始图像
Mat srcImage = imread("lena.jpg");
if (srcImage.empty())
{
cout << "读取图像失败!" << endl;
return -1;
}
// 将原始图像转化为灰度图像
Mat grayImage;
cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
// 对灰度图像进行膨胀操作
Mat dilateImage;
Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(grayImage, dilateImage, element);
// 对灰度图像进行腐蚀操作
Mat erodeImage;
erode(grayImage, erodeImage, element);
// 对膨胀后的图像和腐蚀后的图像进行相减操作
Mat subtractImage;
subtract(dilateImage, erodeImage, subtractImage);
// 显示图像
imshow("srcImage", srcImage);
imshow("dilateImage", dilateImage);
imshow("erodeImage", erodeImage);
imshow("subtractImage", subtractImage);
waitKey(0);
return 0;
}
```
在上述代码中,我们首先读取原始图像并将其转化为灰度图像,然后使用`getStructuringElement()`函数创建一个形态学元素,通过调用`dilate()`和`erode()`函数对灰度图像进行膨胀和腐蚀操作,最后使用`subtract()`函数对膨胀后的图像和腐蚀后的图像进行相减操作,得到差值图像。最后,我们使用`imshow()`函数将图像显示出来。
阅读全文