c++ - 在 opencv 和 wxwidgets 之间转换图像

标签 c++ opencv 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);
...

关于c++ - 在 opencv 和 wxwidgets 之间转换图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177747/

相关文章:

c++ - 从BackgroundSubtractorMOG2检索背景图像时出错

c++ - 变形图像和 Homography opencv 矩阵的问题

linux - 混合 WxWidgets 和 GTK+

c++ - 我的 wxFrame 周围有一个 1 px 的细边框,尽管我要求没有边框。为什么?

python - 简单数字识别中的OpenCV Python错误

c++ - 无效或缺失选项

c++ - qDebug 没有打印包含二进制数据的完整 QByteArray

c++ - 如何在 C++ 中执行跨平台异步文件 I/O

c++ - const vector 中的非常量

opencv - 如何在项目中使用本地jar?