Python 无法使用OpenCV3找到轮廓,但代码在OpenCV2上工作

Python 无法使用OpenCV3找到轮廓,但代码在OpenCV2上工作,python,opencv,contour,opencv-contour,Python,Opencv,Contour,Opencv Contour,以下是不起作用的代码: original_image = cv2.imread(test_image,cv2.IMREAD_GRAYSCALE); bin_ada = cv2.adaptiveThreshold(original_image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,43,0); img,contours, hierachy = cv2.findContours(bin_ada,cv2.RETR_TREE,cv2.C

以下是不起作用的代码:

original_image = cv2.imread(test_image,cv2.IMREAD_GRAYSCALE);
bin_ada = cv2.adaptiveThreshold(original_image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,43,0);
img,contours, hierachy = cv2.findContours(bin_ada,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE,(0,0));
以下是有效的代码:

original_image = cv2.imread(test_image,cv2.IMREAD_GRAYSCALE);
bin_ada = cv2.adaptiveThreshold(original_image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,43,0);
contours, hierachy = cv2.findContours(bin_ada,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE,(0,0));
不同之处在于,第一个代码使用Python3和更新的OpenCV库(3.4.1)运行,而第二个代码使用Python2和更旧的OpenCV库(2.4.5)运行

这是虫子吗?或者有没有一个简单的解释来解释为什么第一段代码不起作用

错误是:

OpenCV(3.4.1) /io/opencv/modules/imgproc/src/contours.cpp:1894: error: (-215) _contours.empty() || (_contours.channels() == 2 && _contours.depth() == 4) in function findContours

如果您需要任何帮助,我将不胜感激。

您不需要findContours的最后一个参数,它是一个偏移量,您将设置为(0,0)(如果您确实需要偏移量,请使用偏移量=(y,x))

这段代码在python 3.6.3和opencv 3.4中工作

import cv2
import numpy as np

original_image = cv2.imread("./1.jpeg",cv2.IMREAD_GRAYSCALE);
bin_ada = cv2.adaptiveThreshold(original_image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,43,0);
img,contours, hierachy = cv2.findContours(bin_ada,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE);

@抱歉浪费您的时间,我没有注意偏移量+1没问题。我们都会犯错误。我是来学习的。无论如何,我感谢你的时间!