如何将 labview 图像类型转换为 opencv 图像类型(或 Mat)?

How to convert a labview image type to opencv image type (or Mat)?

我正在使用 LabView 从 USB 相机获取图像,然后我想通过 dll 文件(在调用函数 VI 中使用)使用 openCV 函数处理该图像。现在我想将Labview生成的图像格式转换为用opencv处理它。我该怎么做?

使用任何可用的工具包。比如说,这个:https://www.ehe-lab.com/OpenCV_Wrapper.html

您可以使用 "IMAQ GetImagePixelPtr" 在 LabView 中获取图像上的指针。

在dll中,你应该可以这样获取:

    int function(unsigned __int8 *LVImagePointer, int lineWidth, int height, int width)
    {
        Mat image(height, width, CV_8UC1, LVImagePointer, lineWidth);
        ...
    }

我发现要防止内存泄漏很复杂。我建议你使用工具包:http://ms-consultants.de/index.php/software/msc-image-processing/37-msc-image-processing-eng

如果您需要更多,他们还提供实现新功能。

我发现将 IMAQ ImageToArray 用于 IMAGEIMAQ GetImageSize 用于 IMAGE_HEIGHTIMAGE_WIDTH 并将它们传递给 DLL 很容易。他们这样称呼:

cv::Mat src = cv::Mat(IMAGE_HEIGHT, IMAGE_WIDTH, CV_8UC1, IMAGE);

它的优点是,通过将您从 DLL 中获取的数组转换回图像,可以在 Labview 中看到对 src 的所有操作。