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