psc = cv2.createShapeContextDistanceExtractor().computeDistance(contour, contour) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\shape\src\sc_dis.cpp:204: error: (-215:Assertion failed) (set1.channels()==2) && (set1.cols>0) in function 'cv::ShapeContextDistanceExtractorImpl::computeDistance'
时间: 2023-07-23 13:09:04 浏览: 164
PSC.rar_.psc_PSC
这个错误可能是由于传递给 `computeDistance` 方法的轮廓 `contour` 格式不正确引起的。确保 `contour` 变量的形状是 `(N, 1, 2)`,其中 `N` 是轮廓点的数量。如果您已经使用 `cv2.findContours` 查找了轮廓,那么 `contour` 变量应该已经符合要求,否则您可以使用以下代码将其转换为正确的格式:
```
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contour = contours[0]
contour = contour.reshape(-1, 1, 2)
```
在上面的代码中,我们假设 `thresh` 是二值化后的图像,`cv2.RETR_EXTERNAL` 表示只查找最外层的轮廓,`cv2.CHAIN_APPROX_SIMPLE` 表示使用简单的逼近方法来压缩轮廓。
如果您仍然遇到问题,请检查您的 OpenCV 版本是否正确安装,并确保您的轮廓变量格式正确。
阅读全文