opencv去除小连通域
时间: 2023-08-02 09:05:39 浏览: 132
要使用OpenCV去除小连通域,可以使用函数RemoveSmallRegion。这个函数的定义如下:void RemoveSmallRegion(Mat &Src, Mat &Dst,int AreaLimit, int CheckMode, int NeihborMode)。其中,Src是输入图像,Dst是输出图像,AreaLimit是连通域的面积阈值,CheckMode是检查模式,NeihborMode是邻域模式。\[1\]
下面是一个使用RemoveSmallRegion函数去除小连通域的示例代码:
Mat erzhi1 = Mat::zeros(srcImage.rows, srcImage.cols, CV_8UC1);
RemoveSmallRegion(dst, erzhi, 100, 1, 1);
RemoveSmallRegion(erzhi, erzhi, 100, 0, 0);
imshow("erzhi1", erzhi);\[2\]
在这个示例中,首先创建了一个与原始图像大小相同的二值图像erzhi1。然后,通过调用RemoveSmallRegion函数两次,分别对dst和erzhi进行处理,去除面积小于100的连通域。最后,将处理后的图像erzhi显示出来。
另外,如果你想使用其他方法去除小连通域,也可以使用一些其他的OpenCV函数,比如contourArea和vector.erase。例如,你可以使用以下代码删除面积小于800的连通域:
contours.erase(remove_if(contours.begin(), contours.end(),\[\](const vector<Point>& c) {return contourArea(c) < 800; }), contours.end());\[3\]
#### 引用[.reference_title]
- *1* *2* [OPENCV去除小连通区域,去除孔洞](https://blog.csdn.net/dajiyi1998/article/details/60601410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [opencv去除小区域的连通区域](https://blog.csdn.net/qq_19272431/article/details/128799628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文