我们在工作中用摄像头去拍摄目标的时候,是没有办法保证这个摄像头肯定是水平的,所以拍下来的图像肯定是有点歪的。我们在用opencv导入图片的时候,首先要对这个图片进行旋转,把它调整到一个标准的位置。
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()
参考链接: