【发布时间】:2017-08-11 11:06:12
【问题描述】:
我正在尝试创建一个函数,以便使用 OpenCV 3.1 设置 QImage 的对比度/亮度。这在发布时完美运行,但在调试中不起作用(它返回一个空白图像):
QImage getNewImage(QImage *img, float contrast, float brightness)
{
// Convert image to temporary cv::Mat with a deep copy
// Output format is BGRA
cv::Mat temp(img->height(),img->width(),CV_8UC4,(uchar*)img->bits(),img->bytesPerLine());
temp.convertTo(temp, -1, contrast, brightness);
cv::cvtColor(temp, temp, CV_BGRA2RGB);
// Convert back to QImage RGB
QImage dest((const uchar *) temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
return dest;
}
你知道可能是什么问题吗?
编辑
我的.pro(两个相关的dll在bin目录下)。
INCLUDEPATH += ../lib/opencv/include
CONFIG(debug, debug|release) {
LIBS += ../lib/opencv/opencv_world310d.lib
} else {
LIBS += ../lib/opencv/opencv_world310.lib
}
包括:
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
【问题讨论】:
-
你在项目设置中添加了所有库吗?
-
你如何构建这个?你能在这里分享你的 qmake/cmake 文件吗?也许有一些优化..?
-
"// 将图像转换为带有深拷贝的临时 cv::Mat" 这不是深拷贝,顺便说一句