[英]How to convert cv::Mat to void*
我正在 C++ 中制作 DLL 以在 LabView 中使用它,我得到一個 RGB 圖像並將其轉換為灰度。 我的代碼如下:
DLLIMPORT void function (void* ImageSrc, void* ImageF)
{
cv::Mat greyMat, colorMat;
colorMat = cv::Mat(488, 648, CV_8U, (uchar*)ImageSrc);
greyMat = (colorMat, CV_LOAD_IMAGE_GRAYSCALE);
}
ImageF 將是灰色圖像,我不知道如何在 ImageF 中復制 grayMat。
根據以下帖子,它應該非常簡單:
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
。ImageF
作為data
參數創建灰色cv::Mat
(並鍵入CV_8UC1
)。cv:Mat
對象(構造函數重載)有多種選擇。ImageF
指向圖像的數據。cv::COLOR_RGB2GRAY
轉換類型執行cv::cvtColor
,用於從 RGB 轉換為灰色。 筆記:
在執行 function之前,必須在LabView
中定義 output 圖像的分辨率(684x488)和類型(每個像素一個字節的灰色類型)。
大小和類型信息不會從function
傳遞到LabView
。
只有“原始”圖像數據被傳遞給LabView
。
請讓我知道它是否有效,因為我無法測試它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.