计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(九)---图片的剪切和移位

图片的剪切:

import cv2
img = cv2.imread('1.jpg', 1)
info = img.shape
dst = img[100: 200, 100: 300]           # 分别是高和宽
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

代码很简单,就不做详细记录了,最终的显示是:
 接下来,我们要做的是进行图片移位的学习。

import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
# 定义移位
matShift = np.float32([[1, 0, 100], [0, 1, 200]])
# 这里的功能是进行矩阵的移位,是图片的移位的API,更是矩阵运算
dst = cv2.warpAffine(img, matShift, (height, width))
cv2.imshow('dst', dst)
cv2.waitKey(0)

其中移位的效果图是: 

其中移位的算法原理是:[[1, 0, 100], [0, 1, 200]]     

将其拆分成两个矩阵,第一个为2*2的矩阵,第二个为2*1的矩阵,这里是:[[1,0],[0,1]]记录为A;[[100],[200]]记录为B

输入的X和Y定义为C,实际的运算公式是A*C+B得到的了会得到[[X+100],[Y+200]],则可以看作是图片横坐标移位100,纵坐标移位200得到。这个是warpAffine这个API所代表的算法原理

通过像素级别怎么移动呢:(10,20)->(110,220)变成了这样。

import cv2
import numpy as np
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
dst = np.zeros(img.shape, np.uint8)   # uint8可以代表0-255的值
height = info[0]
width = info[1]
for i in range(0, height):
    for j in range(0, width-100):          # 右移100个像素
        dst[i, j+100] = img[i, j]
cv2.imshow('image',dst)
cv2.waitKey(0)

这个就是用源码实现图片的位移,实现的效果是(将图片向右移动100个像素):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值