一. 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.add ( ) 加法操作
两张图片相加,shape必须相同
图片对应位置相加,如果相加后出现值大于255的情况,统一置为255
解决方法:
1. 相加图片权重相同
2. 相加图片权重不同
7. cv.subtract ( ) 减法操作
对应位置相减,如果小于0,统一置为0
8. cv.multiply ( ) 乘法操作
对应位置相乘,如果大于255,统一置为255
9. 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 基于像素值的逻辑运算】文章来源:https://www.toymoban.com/news/detail-848895.html
祝愉快🌟!文章来源地址https://www.toymoban.com/news/detail-848895.html
到了这里,关于Opencv | 基于像素的基础操作 & 逻辑运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!