最近在用opencv做传统图像处理方面的一些工作,需要把matlab下的一些代码用C++实现,其中bwareaopen是我自己实现的,bwmorph的细化是这篇文章的点击打开链接实现的,目前功能已经有了,可能还要优化。废话少说,上代码吧。
void Matlab::bwareaopen(Mat src, Mat &dst, double min_area){
dst = src.clone();
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(src, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point());
if(!contours.empty() && !hierarchy.empty()){
vector<vector<Point> >::const_iterator itc = contours.begin();
while(itc != contours.end()){
Rect rect = boundingRect(Mat(*itc));
double area = contourArea(*itc);
if(area < min_area){
for(int i=rect.y;i<