【发布时间】:2021-07-04 15:13:09
【问题描述】:
我创建了一个简单的程序来检测图像上的二维码:
self.qrReader=cv2.QRCodeDetector()
self.text,points,_=self.qrReader.detectAndDecode(self.img)
现在当我在检测到的二维码上绘制矩形时:
cv2.rectangle(self.img,points[0][0],points[0][2],color,thickness)
我遇到了一个错误:
File "e:\Users\Abhimanyu\Documents\aiocv\aiocv\qr_code_reader_module.py", line 19, in findQRCode
cv2.rectangle(self.img,points[0][0],points[0][2],color,thickness)
cv2.error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'rectangle'
> Overload resolution failed:
> - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
> - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
> - Can't parse 'rec'. Expected sequence length 4, got 2
> - Can't parse 'rec'. Expected sequence length 4, got 2
当我打印点[0][0]时:
[ 40. 40. ]
当我打印点[0][2]时:
[288.99997 288.99997]
完整的数组如下所示:
[[[ 40. 40. ]
[288.99997 40. ]
[288.99997 288.99997]
[ 40. 288.99997]]]
这里有什么问题?
【问题讨论】:
-
打印
points[0][0]和points[0][2]。向我们展示输出。 -
@ChristophRackwitz 完成
-
cv2.rectangle的点应该是元组而不是 NumPy 数组。试试cv2.rectangle(tuple(self.img,points[0][0]), tuple(points[0][2]) ,color,thickness)或cv2.rectangle(tuple(self.img,points[0][0].astype(np.int32)), tuple(points[0][2].astype(np.int32)) ,color,thickness)