python+opencv图像处理(八)
无所谓,谁会爱上谁。。。
无所谓,不能天天更。。。
只要是,不要一直断。。。
-----------------------------------我是可爱的分割线
图像平移的意思就是将图像沿着x轴、y轴移动,我们可以进行上、下、左、右等各个方向的移动。
1、右移
如下图,是lena美女图像朝右移动了50个像素。
代码如下:
import cv2
import numpy as np
img = cv2.imread("E:/image/lena.jpg")
cv2.imshow(“img”,img)
w,h,m= img.shape
dst = np.zeros((w,h,m), np.uint8)
for i in range( w):
for j in range( h - 50 ):
dst[i, j + 50] = img[i, j]
cv2.imshow('image', dst)
cv2.waitKey(0)
往右移动过后,会发现左边全是黑色,原因是在创建数组时,全初化为0,故全是黑色。如果想将其改为其他颜色也是可以的,如下图所示,我将其赋了颜色为lena左上角第一个点的颜色。
代码如下:
import cv2
import numpy as np
img = cv2.imread("E:/image/lena.jpg")
w,h,m= img.shape
dst = np.zeros((w,h,m), np.uint8)
for i in range( w):
for j in range( h - 50 ):
dst[i, j + 50] = img[i, j]
dst[:,0:50]=img[0][0]
cv2.imshow('image', dst)
cv2.waitKey(0)
2、左移
类似右移,只要注意其行和列的变化就行。
其代码如下:
import cv2
import numpy as np
img = cv2.imread("E:/image/lena.jpg")
cv2.imshow('img', img)
w,h,m= img.shape
dst = np.zeros((w,h,m), np.uint8)
for i in range(w):
for j in range( h - 50 ):
dst[i, j] = img[i, j+50]
cv2.imshow('image', dst)
cv2.waitKey(0)
移动后的地方也是可以补颜色的,如下图所示,我保留了它原来的颜色:
代码如下:
import cv2
import numpy as np
img = cv2.imread("E:/image/lena.jpg")
cv2.imshow('img', img)
w,h,m= img.shape
dst = np.zeros((w,h,m), np.uint8)
for i in range(w):
for j in range( h - 50 ):
dst[i, j] = img[i, j+50]
dst[:,h-50:h]=img[:,h-50:h]
cv2.imshow('image', dst)
cv2.waitKey(0)
3、其他方向的移动
其他方向的移动和上类似,如往上移:
往下移:
同时移:
想怎么移就怎么移,想上什么色就上什么色:
其代码如下:
import cv2
import numpy as np
img = cv2.imread("E:/image/lena.jpg")
cv2.imshow('img', img)
w,h,m= img.shape
dst = np.zeros((w,h,m), np.uint8)
for i in range(w-50):
for j in range( h-60):
dst[i+50, j+60] = img[i, j]
dst[0:50,:]=img[0:50,:]
dst[50:,0:60]=img[50:,0:60]
cv2.imshow('image', dst)
cv2.waitKey(0)