3.1加号运算和 cv2.add()
加号当 a+b >255 时, 返回 (a+b)的模
add 是直接返回255
3.2 加权和
import cv2
import numpy as np
img1 = np.ones((30,40), dtype= np.uint8) * 100
img2 = np.ones((30,40), dtype= np.uint8) * 10
img3 = cv2.addWeighted(img1, 0.7, img2, 0.3, 2) #这里是img1*0.7 + img2*0.3 + 2 计算出来的结果
#cv2.imshow("B0",b2)
cv2.imshow("2",img1)
cv2.imshow("1",img2)
cv2.imshow("0",img3)
cv2.waitKey()
cv2.destroyAllWindows()
3.3按位逻辑运算
import cv2
import numpy as np
img = cv2.imread("tina.jpg",1)
a = np.zeros(img.shape, np.uint8)
a [100:200, 200:300] = 255
res = cv2.bitwise_and(img, a)
cv2.imshow("0",res)
cv2.waitKey()
cv2.destroyAllWindows()
这里是把图像 纵100-200 横 200-300 的区域显示出来,其他地方为黑色
#!/usr/bin/env python
import cv2
import numpy as np
a = cv2.imread("tina.jpg", 1)
cv2.imshow("show",a)
w, h, c = a.shape
mask = np.zeros((w,h,3), dtype = np.uint8)
mask[100:200, 200:500] = 255
ce = cv2.bitwise_and(a, mask)
print("a shape is ",a.shape)
cv2.imshow("mask",ce)
cv2.waitKey()
这个是可行的
但是改成下面的代码的时候会显示一样的图片,没有淹没**。 查找原因。。。**。
#!/usr/bin/env python
import cv2
import numpy as np
a = cv2.imread("tina.jpg", 1)
cv2.imshow("show",a)
w, h, c = a.shape
mask = np.zeros((w,h), dtype = np.uint8)
mask[100:200, 200:500] = 255
#ce = cv2.bitwise_and(a, a, mask) #这里不一样,这是错误代码
ce = cv2.bitwise_and(img, img, mask=mask) # 必须加一个mask= mask 才可以正确执行
print("a shape is ",a.shape)
cv2.imshow("mask",ce)
cv2.waitKey()
3.5 图像与数值运算
可以直接加
img = cv2.add(img1, 2) #表示 img每个像素都加1
3.6 位平面分解
将灰度图像中的不同位进行分解
举个例子,一个8位的图像 [0, 255]
209 197 163
125 247 160
对应二进制为
1101 0001 1100 0101 1010 0011
0111 1101 1111 0111 1010 0000
可以分成8个位平面
最右位 最右第二位
1 1 1 0 0 1
1 1 0 0 1 0
本文详细介绍了使用OpenCV进行图像处理的核心操作,包括加号运算与cv2.add()的区别,加权和的计算方法,按位逻辑运算的应用,以及图像与数值运算的基本原理。同时,文章还探讨了位平面分解的概念及其在图像处理中的作用。
9万+

被折叠的 条评论
为什么被折叠?



