目录
- 一. 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_INVcv.THRESH_TRUNCcv.THRESH_TOZEROcv.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 基于图像的运算】
祝愉快🌟!