使用带有 OpenCV 和 Python 的 ArUco 标记的奇怪图像显示伪影
Strange image display artifacts using ArUco Markers with OpenCV and Python
我正在使用 OpenCV 3.4 和 Python 3.6 并尝试读取 ArUco 标记。我取得了成功,但我遇到了一个意想不到的问题,希望有人能引导我朝着正确的方向前进。
import numpy as np
import cv2
import cv2.aruco as aruco
test_dict = aruco.getPredefinedDictionary(aruco.DICT_6X6_50)
img = cv2.imread(test.jpg)
corners, ids, rejects = aruco.detectMarkers(img, test_dict)
markerImg = aruco.drawDetectedMarkers(img, corners)
rejectImg = aruco.drawDetectedMarkers(img, rejects)
stackedImage = np.hstack((markerImage, rejectImage))
cv2.imshow("Accepts and Rejects", stackedImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
奇怪的是堆叠的图像是相同的。拒绝和检测都是一样的。如果我注释掉执行拒绝绘制的行,我只会看到检测到的标记,反之亦然。
有人知道是什么原因造成的吗?
我能够确定我遇到的问题的原因。函数:
markerImage = aruco.drawDetectedMarkers(img, corners)
将 markerImage 和 img 设置为完全相同的对象,这样
markerImage is img
返回为 True。
为了避免这个问题,我使用以下方法处理 img:
markerImage = img.copy()
aruco.drawDetectedMarkers(markerImage, corners)
此功能与我的大部分经验有很大不同,因此希望它能对以后的人有所帮助。
我正在使用 OpenCV 3.4 和 Python 3.6 并尝试读取 ArUco 标记。我取得了成功,但我遇到了一个意想不到的问题,希望有人能引导我朝着正确的方向前进。
import numpy as np
import cv2
import cv2.aruco as aruco
test_dict = aruco.getPredefinedDictionary(aruco.DICT_6X6_50)
img = cv2.imread(test.jpg)
corners, ids, rejects = aruco.detectMarkers(img, test_dict)
markerImg = aruco.drawDetectedMarkers(img, corners)
rejectImg = aruco.drawDetectedMarkers(img, rejects)
stackedImage = np.hstack((markerImage, rejectImage))
cv2.imshow("Accepts and Rejects", stackedImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
奇怪的是堆叠的图像是相同的。拒绝和检测都是一样的。如果我注释掉执行拒绝绘制的行,我只会看到检测到的标记,反之亦然。
有人知道是什么原因造成的吗?
我能够确定我遇到的问题的原因。函数:
markerImage = aruco.drawDetectedMarkers(img, corners)
将 markerImage 和 img 设置为完全相同的对象,这样
markerImage is img
返回为 True。
为了避免这个问题,我使用以下方法处理 img:
markerImage = img.copy()
aruco.drawDetectedMarkers(markerImage, corners)
此功能与我的大部分经验有很大不同,因此希望它能对以后的人有所帮助。