0
A
回答
2
首先找到它的凸包,然後在它的內部區域填寫:
cv::Mat inputImage = cv::imread("input.jpg", CV_LOAD_IMAGE_GRAYSCALE);
cv::threshold(inputImage, inputImage, 10, 255, 0);
// find non-zero elements
cv::Mat nonZeroCoordinates;
cv::findNonZero(inputImage, nonZeroCoordinates);
cv::vector<cv::Point> points;
for (int i = 0; i < nonZeroCoordinates.total(); i++)
{
points.push_back(nonZeroCoordinates.at<cv::Point>(i));
}
// Find convex hull
std::vector<int> hull;
cv::convexHull(cv::Mat(points), hull, false);
cv::vector<cv::Point> hullpoints;
int hullcount = (int)hull.size();
for (int i = 0; i < hullcount; i++)
{
cv::Point pt = points[hull[i]];
hullpoints.push_back(pt);
}
std::vector<std::vector<cv::Point> > fillContAll;
fillContAll.push_back(hullpoints);
cv::Mat result = cv::Mat::zeros(inputImage.size(), CV_8UC1);
cv::fillPoly(result, fillContAll, cv::Scalar(255));
鑑於你的原始圖像:
這是你最後的結果:
相關問題
- 1. 在opencv中填充輪廓
- 2. 如何將輪廓線變成填充的輪廓?
- 3. 用輪廓填充圓形
- 4. 填充輪廓的線性算法
- 5. 填充線段創建輪廓
- 6. OpenCV輪廓面積大於,例如。 200px
- 7. 如何在OpenCV 2.3.1中使用輪廓?
- 8. OpenCV輪廓?
- 9. Opencv輪廓
- 10. OpenCV-如何統一不同的輪廓,一個封閉輪廓
- 11. 如何在Python OpenCV中去除輪廓內的輪廓?
- 12. 使用NumPy填充形狀/輪廓
- 13. Matlab:用imcontour填充輪廓圖
- 14. 如何通過opencv判斷輪廓是線還是曲線?
- 15. 如何在OpenCV中獲得單獨的輪廓(並填充它們)?
- 16. OpenCV C++:通過輪廓區域對輪廓線進行排序
- 17. 搜索輪廓內的輪廓/ OpenCV C++
- 18. matplotlib中的輪廓標籤填充輪廓錯誤?
- 19. R輪廓和填充輪廓不能吻合
- 20. 如何填寫輪廓充分利用stat_contour
- 21. 如何用預定義的七巧板形狀填充輪廓?
- 22. 如何通過PIL填充輪廓文本以使用tesseract?
- 23. 如何繪製用ggplot過零的離散填充輪廓?
- 24. 如何水平連接OpenCV輪廓?
- 25. 如何從OpenCV獲得點的輪廓
- 26. 如何獲得的輪廓角OpenCV中
- 27. 如何處理OpenCV輪廓的座標?
- 28. OpenCV輪廓時刻?
- 29. Opencv輪廓錯誤
- 30. (opencv)合併輪廓
Python,C++還是Java? – rayryeng
這就是所謂的區域填充,如果你在matlab上,那麼這可能會幫助你:http://www.mathworks.com/matlabcentral/answers/111131-how-to-fill-the-region-of-interest-by-白色 – mumair
同樣的問題在這裏回答:http://stackoverflow.com/questions/1716274/fill-the-holes-in-opencv – mumair