当我尝试调用cv2.drawMarker
函数时出现以下错误。
...
line_type=cv2.LINE_AA)
TypeError: integer argument expected, got float.
Process finished with exit code 1
这是我的函数调用
for keypoint in keypoints:
im_with_keypoints = cv2.drawMarker(im_with_keypoints,
keypoint.pt,
(0, 0, 255),
markerType=cv2.MARKER_CROSS,
markerSize=30,
thickness=2,
line_type=cv2.LINE_AA)
这是来自OpenCV官方网站的功能文档。
void cv::drawMarker ( Mat & img,
Point position,
const Scalar & color,
int markerType = MARKER_CROSS,
int markerSize = 20,
int thickness = 1,
int line_type = 8
)
我尝试从
进行更改line_type = cv2.LINE_AA
到
line_type = int(0)
尝试强制使用参数类型,但是我仍然遇到相同的错误。
我试图寻找其他代码示例,但是cv2.LINE_AA
应该可以工作。我的int(..)转换仍然遇到相同的错误,因此我不确定从这里去哪里...
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
错误的逻辑原因只能是您的keypoints
是float
而不是integer
dtype,因为您已经正确传递了所有其他参数的预期类型。
您可以使用astype
转换dtype:
keypoints = keypoints.astype(np.int32)
调试这些错误的一个好技巧是查看前几行,如果报告的错误行看起来还不错,则查看其他参数。