介绍图像基本运算
这篇文章将为大家详细讲解有关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)
可以看到,原图是一张星空夜景图。
效果如下:
为了便于展示,后面我只截取部分区域效果: