分享

python+opencv图像处理(八)

 pythonjava学习 2021-04-06

无所谓,谁会爱上谁。。。

无所谓,不能天天更。。。

只要是,不要一直断。。。

-----------------------------------我是可爱的分割线

图像平移的意思就是将图像沿着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)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多