opencv2
文章目录
1.item()
参数分别是访问图像的像素点的行和列(行, 列)
如果访问的是彩色图像,那么就需要在补充通道信息(行,列,通道)
#参数分别是索引值(也可以是三元索引),和新值
itemset()
# 前两个参数是随机数的范围,后一个size[,]是几行几列,最后是数据类型
random.randint()
示例
import numpy as np
img = np.random.randint(10, 99, size=[5, 5], dtype=np.uint8)
print("读取像素点 img.item(3, 2) = ", img.item(3, 2))
img.itemset((3, 2), 255)
print("读取修改后的像素点 img.item(3, 2) = ", img.item(3, 2))
2.生成一副随机数值的彩色图像
import cv2
import numpy as np
img = np.random.randint(0, 256, size=[256, 256, 3], dtype=np.uint8)
cv2.imshow("demo", img)
cv2.waitKey()
cv2.destroyAllWindows()
3.感兴趣区域(RIO)
#img[200:200, 200:400]
#表示的是一个方框里面的一个方块区域
import numpy as np
img = np.random.randint(10, 99, size=[5, 5], dtype=np.uint8)
a = img[200:400, 200:400] # python的赋值是真的强大!!!
img[200:400, 600:800] = a
4.给某一个方块打码(代码示例)
import cv2
import numpy as np
a = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG", cv2.IMREAD_UNCHANGED)
cv2.imshow("original", a)
face = np.random.randint(0, 256, (180,100,3))
a[220:400, 250:350] = face
cv2.imshow("result", a)
cv2.waitKey()
cv2.destroyAllWindows()
5.通道拆分之索引拆分
import cv2
lena = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG")
cv2.imshow("lena", lena)
b = lena[:, :, 0]
g = lena[:, :, 1]
r = lena[:, :, 2]
#拆分
cv2.imshow("b", b)
cv2.imshow("g", g)
cv2.imshow("r", r)
lena[:, :, 0] = 0 # 这种改变值还是有点不懂
cv2.imshow("lenab0", lena)
lena[:, :, 1] = 0 #现在懂了
cv2.imshow("lenabog0",lena)
cv2.waitKey()
cv2.destroyAllWindows()
6.通道拆分之函数拆分
#b, g, r = cv2.split(img)
#等价于
#b = cv2.split(img)[0]
#g = cv2.split(img)[1]
#r = cv2.split(img)[2]
7.通道合并
合并顺序为:B—>G—>R
如果改变通道顺序,则会得到不一样的图案
bgr = cv2.merge([b,g,r])
8.图像属性
shape:自己体会,可以判断其为灰度(二值图像)还是彩色图像
size:返回像素数目
dtype:返回图像的数据类型
import cv2
gray = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG")
print("shape = ", gray.shape)
print("size = ", gray.size)
print("dtype = ", gray.dtype)
9.改变形状
m1 = np.ones([3, 3], np.uint8)
m1.fill(199) # 填充数组
print(m1)
m2 = m1.reshape([1, 9]) #变成一个一维数组
print(m2)
10.图像加法运算
像素值相加自动取模即 (254+58)= 63
(a + b) = mod(a+b, 256),就是单写+即可
add(a+b)则是,最大256
import cv2
a = cv2.imread("C:/Users/Lenovo/PycharmProjects/pythonProject3/IMG_0228.JPG")
b = a
r1 = a+b
r2 = cv2.add(a, b)
cv2.imshow("o",a)
cv2.imshow("r1",r1)
cv2.imshow("r2",r2)
cv2.waitKey()
cv2.destroyAllWindows()
其他运算函数
#图像减法:
cv2.subtract(m1, m2)
#除:
cv2.divide(m1, m2)
#乘:
cv2.multip(m1, m2)
#求均值:(各个通道占比情况)
cv2.mean(m1)
#求方差:(展现像素差异)
cv2.meanStdDev(m1)
版权声明:本文为QiaoLiu___lq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。