Согласно следующей записи это должно быть очень просто:
DLLIMPORT void function(void* ImageSrc, void* ImageF)
{
cv::Mat colorMat = cv::Mat(488, 648, CV_8UC3, ImageSrc);
cv::Mat greyMat = cv::Mat(488, 648, CV_8UC1, ImageF);
cv::cvtColor(colorMat, greyMat, cv::COLOR_RGB2GRAY); //You may also try cv::COLOR_BGR2GRAY
}
-
ImageSrc
- это RGB, поэтому он имеет 3 цветовых канала, и тип должен быть CV_8UC3
, а не CV_8U
. - Создайте серый
cv::Mat
с ImageF
в качестве аргумента data
(и введите CV_8UC1
).
Существует несколько вариантов создания cv:Mat
объектов (перегрузка конструктора).
Приведенный выше параметр устанавливает ImageF
для указания данных изображения. - Выполнить
cv::cvtColor
с типом преобразования cv::COLOR_RGB2GRAY
, для преобразования из RGB в серый.
Примечание:
Разрешение выходного изображения (684x488) и тип (серый цвет с одним байтом на пиксель) должны быть определены в LabView
перед выполнением функция.
Информация о размере и типе не передается от function
до LabView
.
Только * необработанные данные изображения передаются в LabView
.
Пожалуйста, дайте мне знать, если это работает, потому что у меня нет возможности проверить это.