对于刚开始学习Opencv的朋友们,查找资料是自学最好的方式。
这一篇博客,我将介绍利用Opencv创建三通道图像、将目标区域叠加在三通道图像上的操作方法,如有问题或建议可留言于我,谢谢!
更多资料请点击:我的目录
Mat roi_img (image.rows, image.cols, CV_8UC3, Scalar::all(0));//创建与image像素大小相等的三通道图像
for(int row=0;row<image.rows;row++) //对图像的行进行遍历
{
for(int col=0;col<image.cols;col++) //对图像的列进行遍历
{
if( ) //条件设定
{
roi_img.at<Vec3b>(row,col)[0]=250; //分别对三通道进行颜色定义
roi_img.at<Vec3b>(row,col)[1]=0;
roi_img.at<Vec3b>(row,col)[2]=50;
}
解析:
Mat roi_img (image.rows, image.cols, CV_8UC3, Scalar::all(0));
创建roi_img图像,像素大小与image的rows(行)和cols(列)相等,CV_8UC3即三通道图像,Scalar::all(0))黑色为自定义的颜色,设定时也可写成Scalar(0,0,0)。
roi_img.at<Vec3b>(row,col)[0]=150;
roi_img.at<Vec3b>(row,col)[1]=150;
roi_img.at<Vec3b>(row,col)[2]=150;
.at(int y, int x)可以用来存取图像中对应坐标为(x,y)的元素坐标。
Vec3b 为RGB三通道彩色图像(一个uchar类型的数组,长度为3)
color[0]=150; //[0]为第一通道,B蓝色分量,并将其值设定为150;
color[1]=150; //[1]为第二通道,G绿色分量,并将其值设定为150;
color[2]=150; //[2]为第三通道,R红色分量,并将其值设定为150;
更多资料请点击:我的目录