-1
A
回答
1
必须使用validContours这样你就可以在使用后findContours使用此代码,您更改boundRect值来查找你想要
vector<vector<Point> > contours_poly(contourss.size());
vector<Rect> boundRect(contourss.size());
vector<Point2f>center(contourss.size());
vector<float>radius(contourss.size());
//Get poly contours
for (int i = 0; i < contourss.size(); i++)
{
approxPolyDP(Mat(contourss[i]), contours_poly[i], 3, true);
}
//Get only important contours, merge contours that are within another
vector<vector<Point> > validContours;
for (int i = 0; i < contours_poly.size(); i++){
Rect r = boundingRect(Mat(contours_poly[i]));
if (r.area() < 200)continue;
bool inside = false;
for (int j = 0; j < contours_poly.size(); j++){
if (j == i)continue;
Rect r2 = boundingRect(Mat(contours_poly[j]));
if (r2.area() < 200 || r2.area()<r.area())continue;
if (r.x>r2.x&&r.x + r.width<r2.x + r2.width&&
r.y>r2.y&&r.y + r.height < r2.y + r2.height){
inside = true;
}
}
if (inside)continue;
validContours.push_back(contours_poly[i]);
}
//Get bounding rects
for (int i = 0; i < validContours.size(); i++){
boundRect[i] = boundingRect(Mat(validContours[i]));
}
相关问题
- 1. 查找照片上的物体轮廓
- 2. 轮廓匹配 - 找到轮廓位移
- 3. 绘制轮廓后找到轮廓
- 4. findContours在opencv中找不到轮廓
- 5. 轮廓与Z(X,Y)
- 6. 轮廓轮廓着色器
- 7. 在ggmap上添加轮廓
- 8. OpenCV cvFindContours找到只有一个轮廓
- 9. 无法找到所有轮廓 - Opencv,python
- 10. OpenCV找到最大的轮廓?
- 11. 在opencv中寻找最大的轮廓
- 12. 从轮廓中提取最外轮廓
- 13. THREE.JS - 如何绘制光环(外部轮廓)到圆形扇区
- 14. 如何从vtkpolydata创建切片轮廓
- 15. 生成alpha图片轮廓的算法?
- 16. 为什么FindContours在opencv中的功能在图像中找到两个轮廓而不是一个轮廓?
- 17. 在轮廓上合并足够的点
- 18. 在图像上搜索轮廓
- 19. 轮廓发现
- 20. 轮廓形状
- 21. Opencv轮廓
- 22. 提取轮廓
- 23. OpenCV轮廓?
- 24. 轮廓提取
- 25. 轮廓匹配
- 26. OpenCV:如何在C++中找到轮廓内的像素
- 27. 如何在java中找到最大的轮廓opencv
- 28. 如何在opencv中找到最大的轮廓C++
- 29. 搜索轮廓是否存在于另一个轮廓
- 30. 当轮廓不存在时,Matplotlib轮廓图失败
感谢您与您的代码,我可以找到确切的轮廓,我想要的区域 –
你可以改变area和boundRect的值来查找你的区域轮廓 –