从 Unity 传递图像数据时,所有 ArUo 标签都被拒绝

All ArUo Tags are getting Rejected when passing the image data from Unity

背景

我正在尝试从从 Unity 发送到 OpenCV 函数的图像数据中检测 ArUco 标记,这些函数可使用其 .dll 进行访问。

版本

OpenCV:4.5.0/4.5.1
统一:2020.1.17f1
Aruco 词典:6x6_250 系列和 AprilTags 36h11 系列

问题

当我使用相机并发送每一帧时(如此处的代码所示),detectMarkers() 功能有效但每个标签都被拒绝。

我试过:

部分Unity代码片段

private WebCamTexture CamTexture;

 void Start()
 {
   CamTexture = new WebCamTexture();
   CamTexture.Play();
 }

 void Update()
 {
   if (CamTexture.isPlaying)
     {
       var rawImg = CamTexture.GetPixels32();
       MarkersDetection.detectAruco(ref ArucoID, ref arrayLength, ref rawImg, WebcamWidth, WebcamHeight);
     }
}

部分OpenCV代码片段

struct Color32
{
    uchar red;
    uchar green;
    uchar blue;
    uchar alpha;
};

extern "C" void __declspec(dllexport) __stdcall detectAruco(int& outArucoID,int& arraySize,Color32 **rawImg,int width,int height) {
cv::Mat imageCopy;
cv::Mat image(height, width, CV_8UC4, *rawImg);

cvtColor(image, imageCopy, COLOR_BGRA2BGR); 
cv::aruco::detectMarkers(imageCopy, arucoDictionary, arucoCorners, arucoIds, parameters, rejectedCandidates);
}

我做错了!现在我使用图像工具翻转图像(任何翻转图像的编辑工具都可以;而不是手动)现在它可以工作了。