这个程序使用OpenCV C对图像进行形态学里的开运算与闭运算。开运算先腐蚀后膨胀可以消除小物体/噪声保留大物体的形状和大小闭运算先膨胀后腐蚀可以填充小孔洞/裂缝连接邻近物体先显示的是开运算的输入(左)与输出(右)可以看到小物体/噪声被去掉了按任意键(比如空格)之后显示闭运算的输入(左)与输出(右)可以看到小孔洞被填充了ksize是20因为输入图像的尺寸比较大(500*680)ksize需要根据实际情况调整。代码int main() { Mat in,out; int ksize 20; in imread(open.png); erode(in, out, Mat::ones(ksize, ksize, CV_8UC1)); dilate(out, out, Mat::ones(ksize, ksize, CV_8UC1)); imshow(in, in); imshow(out, out); waitKey(); in imread(close.png); dilate(in, out, Mat::ones(ksize, ksize, CV_8UC1)); erode(out, out, Mat::ones(ksize, ksize, CV_8UC1)); imshow(in, in); imshow(out, out); waitKey(); }
OpenCV C++形态学操作-开运算与闭运算
这个程序使用OpenCV C对图像进行形态学里的开运算与闭运算。开运算先腐蚀后膨胀可以消除小物体/噪声保留大物体的形状和大小闭运算先膨胀后腐蚀可以填充小孔洞/裂缝连接邻近物体先显示的是开运算的输入(左)与输出(右)可以看到小物体/噪声被去掉了按任意键(比如空格)之后显示闭运算的输入(左)与输出(右)可以看到小孔洞被填充了ksize是20因为输入图像的尺寸比较大(500*680)ksize需要根据实际情况调整。代码int main() { Mat in,out; int ksize 20; in imread(open.png); erode(in, out, Mat::ones(ksize, ksize, CV_8UC1)); dilate(out, out, Mat::ones(ksize, ksize, CV_8UC1)); imshow(in, in); imshow(out, out); waitKey(); in imread(close.png); dilate(in, out, Mat::ones(ksize, ksize, CV_8UC1)); erode(out, out, Mat::ones(ksize, ksize, CV_8UC1)); imshow(in, in); imshow(out, out); waitKey(); }