Java和Python cv2.findContours的不同回报

时间:2018-04-18 02:37:59

标签: c# python opencv opencv-contour

我正在将一个使用OpenCV的Python程序翻译成带有Java绑定的C#。我使用相同的图像测试了Python和C#程序,我意识到findContours方法在两个程序之间返回不同的轮廓。

Python:_, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

C#:Imgproc.FindContours(edges, contours, hierarchy, Imgproc.RetrTree, Imgproc.ChainApproxSimple);

对于Python,我使用len(contours)检查了C#contours.Count,它们分别返回值94和106。我认为这可能是我翻译的程序中存在许多差异的原因,我不确定原因。我在这里做错了什么?

  

加载项:调用Canny之前调用下面的findContours方法。之前的任何事情只是阅读图像,并将图像转换为灰色图像,因此grayImg变量。

C#:Imgproc.Canny(grayImg, edges, 100, 200, 3, false);

Python:edges = cv2.Canny(gray, 100, 200, apertureSize = 3)

我之前认为这是因为不同的OpenCV版本,但我意识到两者都在使用OpenCV 3.除非{3.1}方法在3.1中不同于3.4,否则我会再次回到原点,因为我不喜欢知道问题的原因。

1 个答案:

答案 0 :(得分:0)

我终于找到了这个现象的答案。 python程序使用OpenCV 3.4,而我的C#程序的Java绑定使用旧的OpenCV 3.1。 FindContours方法可以在两个版本中找到,但显然会返回不同的值。