我想检测圆形或半圆形物体的黑色区域,然后用白色填充。在这里,我在下面显示了两个输入图像。
这两个图像的黑色区域被白色包围。如果将这些黑色转换为白色,则可以计算出整个对象的周长。例如:我从下面可以计算周长的位置得到一张图像。
OpenCV
和python
中是否有用于此操作的功能或方法?
答案 0 :(得分:1)
您可以尝试convexHull()
那里的用法(代码是C ++,但是您可以考虑这些步骤并在Python中实现)
cv::namedWindow("origin", cv::WINDOW_FREERATIO);
cv::namedWindow("result", cv::WINDOW_FREERATIO);
cv::Mat img = cv::imread(R"(ObumF.png)");
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
cv::threshold(gray, gray, 100, 255, cv::THRESH_BINARY);
std::vector<std::vector<cv::Point> > contours;
cv::findContours(gray, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
std::vector<std::vector<cv::Point> > convexHulls(contours.size());
for (unsigned int i(0); i<contours.size(); i++) {
cv::convexHull(contours[i], convexHulls[i]);
}
cv::imshow("origin", img);
cv::drawContours(img, convexHulls, -1, cv::Scalar(255, 255, 255), -1);
cv::imshow("result", img);
cv::waitKey();
这是输出:
希望有帮助!