Qt与opencv学习记录2

 我希望把这篇文章中的效果实现。

【Qt学习】 OpenCV美图特效_qt图像处理_顾城沐心的博客-CSDN博客

问题1:

Qt与opencv学习记录2_第1张图片

我发现是因为我使用的是MSVC2017 32位套件,改为MSVC2017 64位套件debug就好了。

Qt与opencv学习记录2_第2张图片

 感觉这是因为我选用的lib库也是64位的。

E:\opencv454\opencv\build\x64\vc15\lib

2.​​​​​​“CV_RGB2BGR”: 未声明的标识符_cv_bgr2rgb_8BitCat的博客-CSDN博客

3.

雪花屏效果的实现。

Qt与opencv学习记录2_第3张图片

代码: 

    Mat srcimage= imread(path.toStdString());
    cvtColor(srcimage,srcimage,CV_BGR2RGB);
    QImage disimage=QImage(srcimage.data,srcimage.cols,srcimage.rows,srcimage.cols*srcimage.channels(),QImage::Format_RGB888);
    disimage = disimage.scaled(ui->oldlabel->width(),ui->oldlabel->height());
    ui->oldlabel->setPixmap(QPixmap::fromImage(disimage));

    //像素二维矩阵函数
    int rows = srcimage.rows;
    //像素二维矩阵列数
    int cols = srcimage.cols * srcimage.channels();
    for(int i=0;i(i);
        for(int j=0;jnewlabel->width(),ui->newlabel->height());
    ui->newlabel->setPixmap(QPixmap::fromImage(disimage2));

分析:

(因为我没有opencv的基础,所以cv空间很多函数的含义都不了解,需要学习)

1.

    cvtColor(srcimage,srcimage,CV_BGR2RGB);

进行颜色空间的转换。

opencv默认的彩色图像的颜色空间是BGR。

CV_BGR2RGB:BGR与RGB之间颜色空间的转换

学习opencv之cvtColor_Huo的藏经阁的博客-CSDN博客 

2. 

 QImage disimage=QImage(srcimage.data,srcimage.cols,srcimage.rows,srcimage.cols*srcimage.channels(),QImage::Format_RGB888);

函数原型:

QImage(uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR)

参数1:
bytesPerLine:图像每行字节数

srcimage.cols*srcimage.channels()

opencv MAT中维度(dims)和通道(channels)的理解和区别_矩阵中channel是什么意思_AndyCheng_hgcc的博客-CSDN博客

参数2:

format:

QImage::Format_RGB888
value:13
注释:The image is stored using a 24-bit RGB format (8-8-8).

 

感想:根据大佬的教程,程序可以跑起来了,但是很多函数还不理解。

本地源码地址:D:\Qt\Qt5Book\Qt5.9Samp\opencv\widget(给自己留个门)。

你可能感兴趣的:(qt,学习,开发语言)