import cv2 import numpy as np # # 通过cv2.warpAffine()实现移动 # img=cv2.imread('D:\Python_OpenCV\chapter3_Pics\clock.jpg') # 构造移动矩阵M,设在x轴方向移动50个像素和在y轴方向移动25个像素的距离 M = np.float32([[1, 0, 50], [0, 1, 25]]) rows, cols = img.shape[0:2] print(img.shape) # 注意rows和cols需要反置,即先列后行 dst = cv2.warpAffine(img, M, (2*cols, 2*rows))cv2.imshow('Origin_image', img) cv2.imshow('New_picture', dst) # # 通过矩阵乘法实现移动 # img_dest = np.zeros((rows*2,cols*2,3),np.uint8) # 构造移动矩阵M,设在x轴方向移动50个像素和在y轴方向移动25个像素的距离 M = np.float32([[1, 0, 25], [0, 1, 50]]) # 修改各个像素的坐标 for y in range(rows):for x in range(cols):#print( img[y,x,:])point = np.float32([y,x,1])y_,x_=np.dot(point,np.transpose(M))# print(x_,y_)img_dest[np.int32(y_), np.int32(x_), 0]= img[y,x,0]img_dest[np.int32(y_), np.int32(x_), 1]= img[y,x,1]img_dest[np.int32(y_), np.int32(x_), 2]= img[y,x,2] cv2.imshow('img_dest', img_dest) cv2.waitKey(0) cv2.destroyAllWindows()