我目前正在使用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](https://istack.dev59.com/cC102.webp)
sum()
返回不同的结果。这可能是罪魁祸首。 - Aurelius