OpenCV3 API函数 学习笔记1


OpenCV3 :


1.imread(“filename”,flags) //读
//flags = -1按解码得到的方式读入图像
//flags = 0按单通道的方式读入图像,即灰白图像
//flags = 1按三通道方式读入图像,即彩色图像

2.namedWindow(“Image Window”,int flags);//创建显示窗口
//flags = WINDOW_AUTOSIZE 窗口大小自动适应图片大小,并且不可手动更改。
//flags =WINDOW_NORMAL 用户可以改变这个窗口大小
//flags =WINDOW_OPENGL 窗口创建的时候会支持OpenGL

3.imshow();//显示图片
imshow(“显示窗口”,img);
//参数1:显示图片的窗口名称。
//参数2:储存图片数据的对象。

4.waitKey(0);//显示等待
//waitKey(25) 延时25毫秒后,显示将自动关闭

5.imwrite(const String& filename, Image)//保存图像

6.flip(Image,result,1);//反转图像
//1为水平反转 0为垂直反转

7.cvtColor(image, image, CV_BGR2RGB);//色彩空间转换
//BGR2RGB BGR转RBG
//COLOR_BGR2GRAY BGR转灰度
//COLOR_BGR2Lab 实现了BGR和Lab之间的转换

8.访问像素
注意Image.Channels1时,为单通道 此时像素为一个8位无符号数,
当Image.Channels
3时,为多通道 此时像素为一组向量
访问像素并赋值

		if (Img.channels()==1)
		{
			Img.at<uchar>(m, n) = 255;
		}
		else if(Img.channels()==3)
		{
			Img.at<Vec3b>(n, m)[0] = 255;
			Img.at<Vec3b>(n, m)[1] = 255;
			Img.at<Vec3b>(n, m)[2] = 255;
		}

注意 Mat.at(y,x)[index]=value 给每个像素点每个通道赋值
,此时Img.at(n, m)[]是整形数据,也可用Vec3f,对于三通道float类型据。

对应的Mat数据类型转换:
Mat src;
Mat dst;
dst.convertTo(src,CV_32F);

9.掩模操作

    Mat kernel = (Mat_<char>(3, 3) <<0, -1, 0, -1, 5, -1, 0, -1, 0);//定义掩模矩阵
	filter2D(Image, Image, Image.depth(), kernel);//掩模操作

    /*也可如下定义kernel
	Mat kernel (3, 3, CV_32F, Scalar(0));
	kernel.at<float>(0, 1) =-1.0;
	kernel.at<float>(1, 0) = -1.0;
	kernel.at<float>(1, 1) = 5.0;
	kernel.at<float>(1, 2) = -1.0;
	kernel.at<float>(2, 1) = -1.0;
	filter2D(Image, Image, Image.depth(), kernel);//掩模操作
	*/
	数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域。
图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。 
数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于:
①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。 
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。 
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。 
④特殊形状图像的制作。

10.用指针访问图像像素

       uchar* data=Image.ptr<uchar>(j);//访问第j行像素的首地址
		for (int i = 0; i < Image.cols*Image.Channel(); i++)
		{
			data[i] =  ...........//data[i]访问第i列像素值
		}

11.拷贝成员函数Image.copyTo()以及Image.clone()

Mat Image1,Image2,Image3;
Image1=Image//浅复制   均指向同一地址
Image.copyTo(Image2);//完全拷贝,互不影响
Image3=Image.clone();//深拷贝

12.创建与Image大小和元素数据类型完全一致的Image_Same
Image_Same.create(Image.rows,Image.cols,Image

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值