簡體   English   中英

在opencv和wxwidgets之間轉換圖像

[英]converting images between opencv and wxwidgets

我有一個大問題。 通過互聯網搜索后,我沒有找到一個好的解決方案。 我通過opencv(2.3)從文件中讀取圖像並進行操作。 之后,我想在用wxwidgets(2.9.3)編寫的應用程序中呈現結果。 主要問題是我的圖像是灰度圖像,因此我只有一個數據指針,而wxwidgets僅使用RGB。 只是一個小例子:

cv::imread(filename,CV_LOAD_IMAGE_GRAYSCALE).convertTo(pictureMatrix,CV_32F,(float)(1/2.0f),0);
// here are some more floating point calculations
cv::Mat output;
pictureMatrix.convertTo(output,CV_8U);
wxImage test(output.rows, output.cols, output.data, true);
wxInitAllImageHandlers();
// saving the picture is just for testing, if it works
test.SaveFile("test.png", wxBITMAP_TYPE_PNG);

您需要做的就是將灰度級轉換為RGB(實際上,如果是Windows,則轉換為BGR)。

cv::Mat grayOutput, rgbOutput;
pictureMatrix.convertTo(grayOutput,CV_8U);
cvtColor(grayOutput, rgbOutput, CV_GRAY2BGR); // note the BGR here. 
//If on Linux, set as RGB
wxImage test(rgbOutput.cols, rgbOutput.rows,  rgbOutput.data, true);
...

您始終可以為每個像素設置R=G=B=<your grayscale value> 如果圖像像素的格式不匹配,則可以按照wxImage期望的格式分配一個新數組,並用這些RGB值填充它。

您也可以查看此鏈接 它看起來與您需要執行的操作類似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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