gpt4 book ai didi

python - 如何使用OpenCV和Python在写圆形对象内用白色填充黑色区域?

转载 作者:行者123 更新时间:2023-12-02 17:32:03 25 4
gpt4 key购买 nike

我想检测圆形或半圆形物体的黑色区域,然后用白色填充。在这里,我显示了下面的两个输入图像。

enter image description here enter image description here

这两个图像具有一些被白色包围的黑色区域。如果将这些黑色转换为白色,则可以计算出整个对象的周长。例如:从下面可以计算周长的位置获得一张图像。

enter image description here
OpenCVpython中是否有用于此操作的函数或方法?

最佳答案

您可以尝试使用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();

,这是输出:

enter image description here

希望能帮助到你!

关于python - 如何使用OpenCV和Python在写圆形对象内用白色填充黑色区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54993054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com