【发布时间】:2020-06-19 01:50:44
【问题描述】:
我向cv2.findContours()传递了一个二进制图像(掩码),我发现mask虽然是一个输入参数,但它会改变。
print('scale: [{} , {}]'.format(np.amin(mask),np.amax(mask)))
contours = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
print('scale: [{} , {}]'.format(np.amin(mask),np.amax(mask)))
将输出:
scale: [0,255]
scale: [0,130]
同时:
print('scale: [{} , {}]'.format(np.amin(mask),np.amax(mask)))
contours = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
print('scale: [{} , {}]'.format(np.amin(mask),np.amax(mask)))
将工作,并打印
scale: [0, 255]
scale: [0, 255]
我想这可能类似于通过引用传递,但我不太擅长 python 并且对python-opencv bind 很陌生。谁能告诉我原因?
提前致谢!
【问题讨论】:
-
我无法使用 opencv 4.1.2 重现此行为。你能提供你的opencv版本吗?
-
我猜你使用的OpenCV早于3.2,并且没有正确阅读
findContours的文档:“该函数在提取轮廓时修改图像。”
标签: python arrays numpy opencv