C++与Python的轮廓差异

2024-04-25 13:05:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用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相同的代码是:

^{pr2}$

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

enter image description here

如您所见,在c++中,每个形状轮廓都被正确地检测到,虽然evn并不完美,但是在Python中我有更多的轮廓。每当一条线稍微断裂,就会检测到一个新的轮廓。你知道我怎么解决这个问题吗?谢谢你!在


Tags: 代码src编程事情opencvcv轮廓计数
1条回答
网友
1楼 · 发布于 2024-04-25 13:05:12

C++函数签名如下: void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )

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

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

相关问题 更多 >