OpenCV对图像的相关处理
环境搭建
这里需要注意的是你得先根据自己Qt库的位置,把opencv相关的库拷贝到里面去。怎么根据呢?你可以在安装目录或者打开Qt的属性也可以打开其安装目录。然后一步步查找到qt库的位置将opencv相关库拷进去。
包头文件
#include<opencv2/opencv.hpp>
#include
#include
这三个是比较常见的,其他的可以自己加
读取图片
在工程目录下放张图片
//Mat img = imread("D:\\Vs\\opencv\\1.jpg"); //读入图像的绝对路径(方式1)
//Mat img = imread("D:/Vs/opencv/1.jpg"); //读入图像的绝对路径 (方式2)
Mat img=imread("1.jpg");//相对路径
imshow("show",img);
这三种方式都是可以的,可以自由尝试。imshow是直接在运行窗口显示出来。
标签显示
cvtColor(img,img,COLOR_BGR2RGB);
QImage image(img.data,img.cols,img.rows,QImage::Format_RGB888);//Mat格式转成QImage
QLabel *label=new QLabel;
label->setPixmap(QPixmap::fromImage(image));
label->show();
或者
label->setPixmap(QPixmap::fromImage(image.rgbSwapped()));//跟cvtColor一样效果
在把label显示出来就行,都是一样的效果。应该先把BGR格式转换成RGB,在把Mat格式转换成QImage,才能让图片在标签里面显示,显示效果如下,一张是imshow出来的,一张是在标签显示的。
模糊处理
Mat frame;
blur(img,frame,Size(10,10));
QImage image1;
image1=QImage(frame.data,frame.cols,frame.rows,QImage::Format_RGB888);//Mat格式转成QImage
QLabel *label1=new QLabel;
label1->setPixmap(QPixmap::fromImage(image1));
label1->show();
效果如下,可以自由修改参数达到不同的效果
图片由像素点组成的验证
Mat img=imread("1.jpg");//500*500
cvtColor(img,img,COLOR_BGR2RGB);
uchar ImageArray[img.cols*img.rows*3]={
0};
for(int i=0