Opencv图像处理中如何使用面具

  介绍

这篇文章将为大家详细讲解有关Opencv图像处理中如何使用面具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

图像基本运算

图像的基本运算有很多种,比如两幅图像可以相加,相减,相乘,相除,位运算,平方根,对数,绝对值等;图像也可以放大,缩小,旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。

bitwise_and, bitwise_or, bitwise_xor, bitwise_not这四个按位操作函数。   void  bitwise_and (InputArray  src1, InputArray  src2, OutputArray  dst,, InputArray 面具=noArray ());,//dst =, src1 , src2   void  bitwise_or (InputArray  src1, InputArray  src2, OutputArray  dst,, InputArray 面具=noArray ());,//dst =, src1  | src2   void  bitwise_xor (InputArray  src1, InputArray  src2, OutputArray  dst,, InputArray 面具=noArray ());,//dst =, src1  ^ src2   void  bitwise_not (InputArray  src, OutputArray  dst, InputArray 面具=noArray ());,//dst =, ~ src

上述的基本操作中都属于将基础数学运算应用于图像像素的处理中、下面将着重介绍

bitwise_and是对二进制数据进行”与“操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制”与“操作,1,1=1,1,0=0,0,1=0,0,0=0
bitwise_or是对二进制数据进行”或“操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制”或“操作,1 | 1=1,1 | 0=0,0 | 1=0,0 | 0=0
bitwise_xor是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1 ^ 1=0,1 ^ 0=1,0 ^ 1=1,0 ^ 0=0
bitwise_not是对二进制数据进行”非“操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制”非“操作,~ 1=0 ~ 0=1

为了便于大家进一步理解,下面给出测试代码:

#, opencv 图像的基本运算   ,   #,导入库   import  numpy  as  np   import  argparse   import  cv2   ,   #,构建参数解析器   时间=ap  argparse.ArgumentParser ()   ap.add_argument(“我,“——image",,需要=True,,帮助=癙ath 用,image")   时间=args  var (ap.parse_args ())   ,   #,加载图像   时间=image  cv2.imread (args (“image"))   cv2.imshow (“image  loaded",,图片)   ,   #,创建矩形区域,填充白色255   时间=rectangle  np.zeros (image.shape [0:2], dtype=皍int8")   cv2.rectangle(矩形,,(25日,25),,(275,,275),255年,1),#,修改这里   cv2.imshow (“Rectangle",矩形)   ,   #,创建圆形区域,填充白色255   时间=circle  np.zeros (image.shape [0:2], dtype=皍int8")   cv2.circle(圆,(150,,150),150年,255年,1),#,修改   cv2.imshow (“Circle",圆)   ,   ,   #,在此例(二值图像)中,以下的0表示黑色像素值0,1,表示白色像素值255   #,位与运算,与常识相同,有0则为0,,均无0则为1   bitwiseAnd =, cv2.bitwise_and(矩形,圆)   cv2.imshow(“这样,bitwiseAnd)   cv2.waitKey (0)   ,   ,   ,   #,非运算,非0为1,非1为0   时间=bitwiseNot  cv2.bitwise_not(圆)   cv2.imshow (“NOT", bitwiseNot)   cv2.waitKey (0)   ,   #,或运算,有1则为1,全为0则为0   bitwiseOr =, cv2.bitwise_or(矩形,圆)   cv2.imshow (“OR", bitwiseOr)   cv2.waitKey (0)   ,   #,异或运算,不同为1,相同为0   bitwiseXor =, cv2.bitwise_xor(矩形,圆)   cv2.imshow (“XOR", bitwiseXor)   cv2.waitKey(0)

可以看到,原图是一张星空夜景图。

效果如下:

Opencv图像处理中如何使用mask

Opencv图像处理中如何使用mask

Opencv图像处理中如何使用mask

为了便于展示,后面我只截取部分区域效果:

Opencv图像处理中如何使用mask

Opencv图像处理中如何使用mask

Opencv图像处理中如何使用面具