gpt4 book ai didi

python - C++ 和 Python 之间的轮廓差异

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:26 24 4
gpt4 key购买 nike

我目前正在使用 opencv 来检测形状上的简单计数。起初,我使用的是 C++,一切运行良好。现在,我正在尝试对 Python 执行相同的操作,因为我需要在线使用它,但轮廓检测似乎也无法正常工作。

这是我的 C++ 代码:

_src = cv::imread(_imagePath);
cv::Mat gray;
cv::cvtColor(_src, gray, CV_BGR2GRAY);
cv::Mat bw;
cv::Canny(gray, bw, 0, 50, 5);
cv::findContours(bw.clone(), allCountours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);

如您所见,它非常简单,相同的代码是 Python 是:

self._src = cv2.imread(self._imagePath)
gray = cv2.cvtColor(self._src, cv2.COLOR_BGR2GRAY)
bw = cv2.Canny(gray, 0, 50, 5)
allCountours, hierarchy = cv2.findContours(bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

为了显示结果,我在不同的轮廓上使用了随机颜色的 drawcontours :

enter image description here

如您所见,在 C++ 中每个形状轮廓都被正确检测到,尽管它并不完美,而在 Python 中我有更多的轮廓。每当一条线中断一点时,就会检测到一个新的轮廓。知道我该如何解决这个问题吗?谢谢!

最佳答案

C++函数签名如下: void Canny(InputArray 图像,OutputArray 边缘,双阈值 1,双阈值 2,int apertureSize=3,bool L2gradient=false)

对于 Python,它是: cv.Canny(image, edges, threshold1, threshold2, aperture_size=3) → 无

如您所见,最后一个参数在 Python 中不可用。它可能设置为 true。你能试试吗?

关于python - C++ 和 Python 之间的轮廓差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146198/

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