1.1 将彩色图像拆分成R,G,B三个通道
1.2 显示拆分后的R,G,B图像
import cv2
# 彩色图片
image = cv2.imread(r"./resource/1.png",cv2.IMREAD_COLOR)
print(image.shape) # (600, 1200, 3)
# 分离三通道
b=image[:,:,0]
g=image[:,:,1]
r=image[:,:,2]
cv2.namedWindow('r',cv2.WINDOW_NORMAL)
cv2.resizeWindow('r',400,300)
cv2.moveWindow('r',0,0)
cv2.imshow("r",r)
cv2.namedWindow('g',cv2.WINDOW_NORMAL)
cv2.resizeWindow('g',400,300)
cv2.moveWindow('g',400,0)
cv2.imshow("g",g)
cv2.namedWindow('b',cv2.WINDOW_NORMAL)
cv2.resizeWindow('b',400,300)
cv2.moveWindow('b',800,0)
cv2.imshow("b",b)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.1 循环读取文件夹内的图片
2.2 改变图像的大小和名字
2.3 存储图片
import cv2
import os
folder_path='./resource/2_1_2_image'
targetPath='./result/2_1_2_image'
picture_num=1
for picture_name in os.listdir(folder_path):
picture_path=folder_path+'/'+picture_name
# 彩色图片
image = cv2.imread(picture_path,cv2.IMREAD_COLOR)
# 改变图片的尺寸
resized_image=cv2.resize(image,(400,300))
# 图片保存到本地
cv2.imwrite(targetPath+'/'+str(picture_num)+'.png',resized_image)
print(picture_name+' complete!')
picture_num+=1
cv2.waitKey(0)
cv2.destroyAllWindows()
3.1 翻转图片
3.2 旋转图片
3.3 仿射变换突变任意角度
3.4 使用matplotlib展示图片
import cv2
import matplotlib.pyplot as plt
src = cv2.imread('./resource/image_A.png')
'''
翻转
flip(src,flipCode) 0上下翻转,>0左右翻转,<0上下+左右
'''
flip_img=cv2.flip(src,flipCode=-1)
'''
旋转图像
rotate(img,rotateCode)
ROTATE_90_CLOCKWISE
ROTATE_180
ROTATE_90_COUNTERCLOCKWISE
'''
rotate_img=cv2.rotate(src,rotateCode=cv2.ROTATE_90_COUNTERCLOCKWISE)
'''
仿射变换
'''
rows,cols,channel = src.shape
# 绕图像的中心点旋转30度,正值表示逆时针旋转,并缩小到0.5
M = cv2.getRotationMatrix2D((cols/2,rows/2),angle=30,scale=0.5)
warpAffine_img = cv2.warpAffine(src,M=M,dsize=(cols,rows))
# 显示图像
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8), dpi=100)
axes[0][0].imshow(src[:,:,[2,1,0]])
axes[0][0].set_title("original")
axes[0][1].imshow(flip_img[:,:,[2,1,0]])
axes[0][1].set_title("flip_img")
axes[1][0].imshow(rotate_img[:,:,[2,1,0]])
axes[1][0].set_title("rotate_img")
axes[1][1].imshow(warpAffine_img[:,:,[2,1,0]])
axes[1][1].set_title("warpAffine_img")
plt.show()
4.1 绘制灰度直方图
4.2 使用matplotlib展示图像和灰度直方图
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 统计灰度直方图并绘制
def calGrayHist(I):
h, w = I.shape
grayHist = np.zeros(256, np.uint64)
for i in range(h):
for j in range(w):
grayHist[I[i][j]] += 1
plt.plot(grayHist)
plt.xlabel("gray value")
plt.ylabel("number")
img = cv2.imread('./resource/2.png', cv2.IMREAD_COLOR)
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.figure(figsize=(15,5))
plt.subplot(131)
plt.imshow(img[:,:,[2,1,0]])
plt.subplot(132)
plt.imshow(img_gray, cmap = "gray")
plt.subplot(133)
calGrayHist(img_gray)
plt.show()
5.1 透视变化
5.2 使用matplotlib展示图像
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('./resource/image_Q.png')
print(img.shape)
# 原图4个点的坐标分别到目标图四个点的坐标
src=np.float32([[20,50],[548,68],[50,840],[610,815]])
dst=np.float32([[0,0],[600,0],[0,890],[600,890]])
M=cv2.getPerspectiveTransform(src,dst)
new=cv2.warpPerspective(img,M,(800,950))
# 显示图形
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.imshow(img[:,:,[2,1,0]])
plt.subplot(122)
plt.imshow(new[:,:,[2,1,0]])
plt.show()