空洞填充
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void fillHole(const Mat srcBw, Mat &dstBw)
{Size m_Size = srcBw.size();Mat Temp = Mat::zeros(m_Size.height + 2, m_Size.width + 2, srcBw.type());//延展圖像 srcBw.copyTo(Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)));floodFill(Temp, Point(0, 0), Scalar(255));Mat cutImg;//裁剪延展的圖像 Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)).copyTo(cutImg);dstBw = srcBw | (~cutImg);
}int main()
{Mat img = imread("a.jpg");Mat gray;cvtColor(img, gray, CV_RGB2GRAY);Mat bw;threshold(gray, bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);Mat bwFill;fillHole(bw, bwFill);imshow("填充前", gray);imshow("填充后", bwFill);waitKey();return 0;
}
轉載于:https://www.cnblogs.com/hsy1941/p/7730108.html
總結
- 上一篇: 关于C/C++的trigraphs和Di
- 下一篇: 软件测试作业1 -- 关于c++项目中类