簡體   English   中英

如何將 cv::Mat 轉換為 void*

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM