Как преобразовать тип изображения labview в тип изображения opencv (или Mat)?

Я использую LabView для получения изображения с USB-камеры, а затем хочу обработать это изображение с помощью функций openCV через файл dll (который используется в функции вызова VI). Теперь я хочу преобразовать формат изображения, который создает Labview, чтобы обработать его с помощью opencv. Как я могу это сделать?

0

Решение

Вы можете использовать IMAQ GetImagePixelPtr, чтобы получить указатель на изображение в LabView.

В DLL, вы должны быть в состоянии получить это так:

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

Другие решения

Использование любого из доступных наборов инструментов. Скажи это: https://www.ehe-lab.com/OpenCV_Wrapper.html

0

Я обнаружил, что трудно предотвратить утечку памяти. Я предлагаю вам использовать инструментарий: http://ms-consultants.de/index.php/software/msc-image-processing/37-msc-image-processing-eng

Они также предлагают реализовать новые функции, если вам нужно больше.

0

Я обнаружил, что это легко использовать IMAQ ImageToArray за IMAGEа также IMAQ GetImageSize за IMAGE_HEIGHT а также IMAGE_WIDTH и передать их в DLL. Они называются так:

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

Преимущество в том, что все операции на srcможно увидеть в Labview, преобразовав массив, который вы получаете из DLL, обратно в изображение.

0
По вопросам рекламы [email protected]