Opencv | Opencv 基于图像的运算

04-23 1187阅读

目录

  • 一. OpenCV 基于图像的运算
    • 1 cv.item( ) 获取图像某个位置的像素值
    • 2. cv. itemset( ) 修改图像某个位置的像素值
    • 3. cv.split( ) / cv.merge( ) 通道的分割与合并
    • 4. cv.copyMakeBorder ( ) 添加边框
    • 5. cv.addWeighted ( ) 图像融合 / 权重和
    • 6. cv.threshold 二值化操作
    • 7. cv.add ( ) 加法操作
    • 8. cv.subtract ( ) 减法操作
    • 9. cv.multiply ( ) 乘法操作
    • 10. cv.divide ( ) 除法操作
    • 二. OpenCV 基于图像的逻辑运算
      • 1. cv.bitwise_not ( )按位非操作
      • 2. cv.bitwise_and ( ) 按位与操作
      • 3. cv.bitwise_or ( ) 按位或操作
      • 4. cv.bitwise_xor ( ) 按位异或操作

        一. OpenCV 基于图像的运算

        img = cv.imread("sky.png",-1)
        print(img.size)  # 750000
        print(img.shape)  # (500, 500, 3)
        print(img.dtype)  # uint8:无符号的整数8位,即(0-255)
        

        1 cv.item( ) 获取图像某个位置的像素值

        	cv.item( ) 
        	作用:
        		一次只能查看一个通道某个点
        	【注意】
        		读取图像格式为BGR
        

        2. cv. itemset( ) 修改图像某个位置的像素值

        	cv. itemset( )
        	作用:
        		一次只能修改一个通道某个个点的像素值
        	【注意】
        		读取图像格式为BGR
        

        3. cv.split( ) / cv.merge( ) 通道的分割与合并

        	cv.split ( )  分割图像的通道
        	cv.merge ( )  融合多个通道
        

        4. cv.copyMakeBorder ( ) 添加边框

        	cv.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)
        	参数:
        		src:输入的图片
        		top/bottom/left/right:相应方向上的边框宽度
        		borderType:
        			要添加边框的类型,具体有:
        				cv.BORDER_REPLICATE:使用最边界的像素值代替
        				cv.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射
        				cv.BORDER_REFLECT_101/cv.BORDER_DEFAULT:边界反射,边界像素不保留
        				cv.BORDER_WRAP:看例子
        				cv.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
        		dst:输出图像;Python接口一般不用这个参数
        		value:如果borderType为cv.BORDER_CONSTANT时,需要填充的常数值
        

        5. cv.addWeighted ( ) 图像融合 / 权重和

        	cv2.addWeighted(src1,alpha,src2.beta,gamma)
        	参数:
        		alpha:src1的权重
        		beta:src2的权重
        		gamma:偏置项
        	非官方:
        		加权和
        	相当于:
        		w1 * x1 + w2 * x2 + b
        	注意:
        		有偏置项
        

        6. cv.threshold 二值化操作

        	retval, threshold_img = cv.threshold(src, thresh, maxval, type)
        	参数:
        		src: 输入图像,通常是灰度图像
        		thresh: 阈值,用于决定像素值如何被分类
        		maxval: 当像素值高于(或低于,取决于阈值类型)阈值时,像素的新值
        		type: 阈值类型
        			  cv.THRESH_BINARY,
        			  cv.THRESH_BINARY_INV
        			  cv.THRESH_TRUNC
        			  cv.THRESH_TOZERO
        			  cv.THRESH_TOZERO_INV
        	作用:
        		基于一个阈值,将图像中的像素值转换为两个可能的值:通常是黑色和白色
        			即: 0(黑色)和1(白色)/ 0(黑色)和255(白色)
        

        7. cv.add ( ) 加法操作

        	两张图片相加,shape必须相同
        	
        	图片对应位置相加,如果相加后出现值大于255的情况,统一置为255
        		解决方法:
        		1. 相加图片权重相同
        		2. 相加图片权重不同
        

        8. cv.subtract ( ) 减法操作

        	对应位置相减,如果小于0,统一置为0
        

        9. cv.multiply ( ) 乘法操作

        	对应位置相乘,如果大于255,统一置为255
        

        10. cv.divide ( ) 除法操作

        	对应位置相除,如果小于0,统一置为0
        

        二. OpenCV 基于图像的逻辑运算

        1. cv.bitwise_not ( )按位非操作

        	图像位运算,对图像的每个像素值进行”非”操作,即:dst=np.uint8(~src)
        

        2. cv.bitwise_and ( ) 按位与操作

        	图像位运算,对两个图像的每个像素值之间进行”与”操作,即: dst=np.uint8(src1 & src2)
        

        3. cv.bitwise_or ( ) 按位或操作

        	图像位运算,对两个图像的每个像素值之间进行”或”操作,即: dst=np.uint8(src1 | src2)
        

        4. cv.bitwise_xor ( ) 按位异或操作

        	图像位运算,对两个图像的每个像素值之间进行”异或”操作,即: dst=np.uint8(src1 ^ src2)
        

        感谢阅读🌼

        Opencv | Opencv 基于图像的运算
        (图片来源网络,侵删)

        如果喜欢这篇文章,记得点赞👍和转发🔄哦!

        有任何想法或问题,欢迎留言交流💬,我们下次见!

        本文相关代码存放位置

            【Opencv 基于图像的运算】

        祝愉快🌟!


VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]