本文参考了以下几位作者的资料:
(1)例子链接
A https://www.cnblogs.com/tiandsp/archive/2013/04/20/3032763.html
(2)问题参考链接
A https://blog.csdn.net/weixin_43694819/article/details/89072777
(3)我的代码参考 前两个例子链接 图可以是普通的一个资源
// CvDilateErodeTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
//#include <opencv/cv.hpp>
//#include <opencv/highgui.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
Mat src = imread("E:/code/test/CvDilateErodeTest/banner.jpg", CV_LOAD_IMAGE_GRAYSCALE);
if (!src.data) //判断图片调入是否成功
return -1;
/*IplImage* shadow_image = cvLoadImage((banner.jpg).c_str(), CV_LOAD_IMAGE_COLOR);
std::cout << cv::getBuildInformation() << std::endl << std::endl << std::endl;
*/
Mat dst;
//输入图像
//输出图像
//单元大小,这里是5*5的8位单元
//腐蚀位置,为负值取核中心
//腐蚀次数两次
erode(src, dst, Mat(5, 5, CV_8U), Point(-1, -1), 2);
imwrite("erode.jpg", dst);
//输入图像
//输出图像
//单元大小,这里是5*5的8位单元
//膨胀位置,为负值取核中心
//膨胀次数两次
dilate(src, dst, Mat(5, 5, CV_8U), Point(-1, -1), 2);
imwrite("dilate.jpg", dst);
//输入图像
//输出图像
//定义操作:MORPH_OPEN为开操作,MORPH_CLOSE为闭操作
//单元大小,这里是3*3的8位单元
//开闭操作位置
//开闭操作次数
morphologyEx(src, dst, MORPH_OPEN, Mat(3, 3, CV_8U), Point(-1, -1), 1);
imwrite("open.jpg", dst);
morphologyEx(src, dst, MORPH_CLOSE, Mat(3, 3, CV_8U), Point(-1, -1), 1);
imwrite("close.jpg", dst);
imshow("dst", dst);
waitKey();
return 0;
}
配置如下:
这些是关于如何配置的过程
第一次接触OpenCV,也是第一次读取JPG这样的图像,实在是中间卡了好久,希望能帮到卡在坑里的盆友们
感谢上述链接的作者们的无私奉献和整理,辛苦啦~~~