Opencv像素点操作--图像加减

opencv像素点操作方法有用at的动态地址访问,ptr指针的访问(ptr指针的处理速度比at快)


方法一:ptr指针的访问


由于读取的是彩色图片,则有三个通道bgr,用ptr指针的方法是把一个像素点的三个通道拆成了三个数组,则在行数不变的 情况下,列数变为了像素点列数的三倍

*data是data数组的首地址,img.ptr<vec3b>(i)是第i行的首地址<vec3b>是彩色图像的类型<uchar>是灰度图的类型,那么data数组的各个元素以三为周期对应了各个像素点

j%3则取余对应了相应的bgr通道




方法二  at动态地址访问


at动态地址访问,at操作来实现对特定点(i,j)像素值的读取与操作(写入),vec3b指的是unchar类型三通道(其实图像可以有4通道,最后一个是阿尔法通道),并暂存于对应像素点为数组名的[0],[1],[2]数组中




两种方法的彩色转素描





这两种方法的思路都是先把彩色图转化为灰度图,根据图像边缘像素值的突变把灰度值(255白-0黑)二值化(0和255)


效果图




三:Mat矩阵类的加减运算与逻辑运算

Mat img1,img2;

Mat dst=img1+img2;

这种Mat类的加减实质上是两个Mat类相应位置像素的加减


//add(img1,img2,dst);//直接把两个图像相应点的像素值相加输出

//addWeighted(img1,0.1,img2,1,0,dst);//二四两个参数是对应图像的权重,及对应图像像素值*权重,再把两个相加,可以通过权重来改变图片显示的对比度



absdiff(img1,img2,dst);

这种方法与图像相减类似,但是若是上面的图像相减操作,若为负则对应的像素值为0,而这种方法若为负,则像素值为绝对值

这种方法可以用于缺陷检测等两个相似图像寻找不同点




图像的与或操作是把10进制的像素值变成二进制然后进行与或操作后转化为十进制


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值