使用带有OpenCV和Python的ArUco标记显示奇怪的图像工件

使用带有OpenCV和Python的ArUco标记显示奇怪的图像工件,python,numpy,image-processing,opencv-python,Python,Numpy,Image Processing,Opencv 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

我正在使用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)
这项功能与我的大部分经验有很大的不同,所以希望它能在将来帮助别人