1、图片像素
(1)像素就是指组成图像的小方格。这些小方格有明确的位置与分配好的颜色值。颜色与位置共同决定呈现出来的效果。
(2)每张图片都是由一个一个像素点组成的,对于rgb格式的图片来说,一个像素点就占用了三个字节。对于一个400X400的图片,它就占用了400X400X3个字节。
(3)一张图片的所有像素点存在MAT矩阵中,MAT[i,j]就是当前点的像素值。
(4)对于灰度图来说,是单通道,彩色图,三通道
2、Mat是一个基本图像容器类。
3、验证每张图片是由很多像素点组成的,取出图片的每一个像素点,并将特定的几行用其他颜色代替
Mat pic=imread("1.jpg");
qDebug()<<"pic row.."<<pic.rows;//图片由多少行
qDebug()<<"pic col.."<<pic.cols;//图片多少列
qDebug()<<"pic ptr..."<<pic.ptr(0);//查看第0行像素点
qDebug()<<"pic data..."<<pic.data;//数据的起始地址
cvtColor(pic,pic,CV_BGR2RGB); //mat格式转换成image, mat格式默认是bgr,需要转换成rgb
uchar Imagarry[pic.cols*pic.rows*3]={0}; //定义矩阵,来存储每一个像素点的值
for(int i=0;i<pic.rows;i++)
{
for(int j=0;j<pic.cols;j++)
{
//指定某几行的颜色
if(i>100&&i<200)
{
Imagarry[i*400*3+j*3+0]=255;
Imagarry[i*400*3+j*3+1]=255;//黄色
Imagarry[i*400*3+j*3+2]=0;
}
else
{
Imagarry[i*400*3+j*3+0]=0;
Imagarry[i*400*3+j*3+1]=255;//绿色
Imagarry[i*400*3+j*3+2]=0;
}
}
}
//4个参数,数据的起始地址,宽高,转换的格式
QImage img4=QImage((const unsigned char*)(Imagarry), pic.cols,pic.rows,QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(img4)); //像显示图片
实现效果:
3、测试取本图片的像素点,在这个图片的基础上进行修改。
cvtColor(pic,pic,CV_BGR2RGB);
uchar Imagarry[pic.cols*pic.rows*3]={0}; //定义矩阵。
for(int i=0;i<pic.rows;i++)//一个一个点取数据
{
uchar * cur_ptr=pic.ptr(i);
for(int j=0;j<pic.cols;j++)
{
if(i>200&&i<300)
{
Imagarry[i*400*3+j*3+0]=0;
Imagarry[i*400*3+j*3+1]=0;
Imagarry[i*400*3+j*3+2]=255;
}
else {
//来验证每张图片都是由像素点组成的。
Imagarry[i*400*3+j*3+0]=cur_ptr[j*3+0];
Imagarry[i*400*3+j*3+1]=cur_ptr[j*3+1];
Imagarry[i*400*3+j*3+2]=cur_ptr[j*3+2];//赋值的是自己图片上的像素点
}
}
}
//4个参数,数据的起始地址,宽高,转换的格式
QImage img4=QImage((const unsigned char*)(Imagarry), pic.cols,pic.rows,pic.step,QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(img4)); //像显示图
3、opencv显示图片使用的是imshow()函数,显示在qt上,需要将Mat格式的图片转换成QImage。并且mat默认格式BGR,需要转换成RGB的格式。
cvtColor(srcImage4,srcImage4,CV_BGR2RGB); //mat格式默认是bgr,需要转换成rgb
img4=QImage((const unsigned char*)(srcImage4.data), srcImage4.cols,srcImage4.rows,QImage::Format_RGB888); //4个参数,数据的起始地址,宽高,转换的格式
版权声明:本文为qq_43243907原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。