-
读取图像
imread(图像路径[, 读取图像的参数])img = cv2.imread("/Users/zhaozhengwei/Desktop/photo/lbj.png")
-
显示图像
imshow(“窗口名”, 读取到的图像)cv2.imshow("demo", img)
-
显示等待
waitKey([,等待参数])cv2.waitKey(0) #无限等待
-
保存图像
imwrite(要保存的路径,要保存的图像)cv2.imwrite("/Users/zhaozhengwei/Desktop/photo/lbj.png",img)
-
关闭窗口
destroyWindow(“窗口名”) # 关闭指定窗口
destroyAllWindows() # 关闭所有窗口cv2.destroyAllWindows()
-
像素处理
获取图像参数:图像(位置参数)img[x,y] #获取图像一个像素点的值,如果为单通道则返回一个值,多通道返回这个点所有通道的值(列表形式) blue = img[x,y,n] #获取多通道图像中一个点的一个指定通道n的值 img[x,y] =255 # 给指定像素点赋值 p = img[100,100] blue = img[100,100,0] img[100,100] =255
-
获取图像的属性
img.shape #返回图像的行数、列数、通道数
img.size # 返回图像的大小,行数列数通道数
img.dtype # 返回图像的数据类型,如uinti8等 -
获取图像区域
frame = img.[200:400,200:400] #获取 200行到400行, 200行到400列之间的图像 img.[200:400,200:400] = frame #将图像复制到200行到400行, 200行到400列之间的区域
-
图像通道拆分合并
b, g, r = cv2.split(img) # 将多通道拆分为单通道 cv2.merge([b, g, r]) # 将多个单通道合并为多通道
-
图像相加
img = img1 + img2 #直接相加,如果像素相加后大于255则对255取模 img = cv2.add(img1, img2) #如果像素相加后大于255,则该点取255
-
图像融合
img = cv2.addWeighted(img1, a, img2, b, 0) #a, b 分别为两张图像融合时的权重,0 为增加的亮度值。
-
图像转换
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #将图像从bgr格式转化为gray
-
图像缩放
img = cv2.resize(img, (100, 100)) #将图像缩放为100*100 大小 img = cv2.resize(img, None, fx=0.5, fy=0.7)) #将图像在x轴方向缩小为0.5,y轴方向缩小0.7
-
图像反转
img = cv2.flip(img, filpCode) #filpCode=0 为上下翻转,filpCode>0 为左右翻转,filpCode < 0为先上下翻转再左右翻转。
-
图像阈值分割
rst, img = (img, thresh, maxval, type)
img为图像,thresh为阈值,maxval为最大值, type为类型rst, img = (img, 127, 255, cv2.THRESH_BINARY) # 二值阈值化:像素值小于等于127则为0,大于127则为255 rst, img = (img, 127, 255, cv2.THRESH_BINARY_INV) # 反二值阈值化:和上面相反,像素值小于等于127则为255,大于127则为0 rst, img = (img, 127, 255, cv2.THRESH_TRUNC) # 截断阈值化:像素值小于127则为原值,大于127则为127 rst, img = (img, 127, 255, cv2.THRESH_TOZERO) # 阈值化为0:像素值小于等于127则为0,大于127则不变 rst, img = (img, 127, 255, cv2.THRESH_TOZERO_INV) # 反阈值化为0:和上面相反,像素值小于等于127则为原值,大于127则为0
待续。。。