如何将 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
用于 IMAGE
和 IMAQ GetImageSize
用于 IMAGE_HEIGHT
和 IMAGE_WIDTH
并将它们传递给 DLL 很容易。他们这样称呼:
cv::Mat src = cv::Mat(IMAGE_HEIGHT, IMAGE_WIDTH, CV_8UC1, IMAGE);
它的优点是,通过将您从 DLL 中获取的数组转换回图像,可以在 Labview 中看到对 src
的所有操作。
我正在使用 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
用于 IMAGE
和 IMAQ GetImageSize
用于 IMAGE_HEIGHT
和 IMAGE_WIDTH
并将它们传递给 DLL 很容易。他们这样称呼:
cv::Mat src = cv::Mat(IMAGE_HEIGHT, IMAGE_WIDTH, CV_8UC1, IMAGE);
它的优点是,通过将您从 DLL 中获取的数组转换回图像,可以在 Labview 中看到对 src
的所有操作。