前言
想跟着b站大佬,去学习一些相关知识
使用opencv对图像进行裁剪以及移位
过程
图片剪切
代码部分
1 2 3 4 5 6 7
| import cv2 img = cv2.imread('YT.jpg', 1) imgInfo = img.shape dst = img[3000:3600, 3100:3700] cv2.imshow('img', dst) cv2.waitKey(0)
|
结果展示
原图:
处理后:
使用API的方式对图片进行位移
代码部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import cv2 import numpy as np
img = cv2.imread('YT.jpg', 1)
imgInfo = img.shape imgH = imgInfo[0] imgW = imgInfo[1] matShift = np.float32([[1, 0, 100], [0, 1, 200]]) dst = cv2.warpAffine(img, matShift, (imgH, imgW))
cv2.namedWindow("enhanced", cv2.WINDOW_FREERATIO)
cv2.imshow("enhanced", dst) cv2.waitKey(0)
|
运行结果
原图:
运行结果:
可以看见图像明显的进行了移位
使用源码的形式对图片进行位移
代码部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import cv2 import numpy as np img = cv2.imread('YT.jpg', 1) cv2.namedWindow("YT", cv2.WINDOW_FREERATIO) cv2.imshow('YT', img) imgInfo = img.shape dst = np.zeros(img.shape, np.uint8) height = imgInfo[0] weight = imgInfo[1] for i in range(0, height): for j in range(0, weight-100): dst[i][j+100] = img[i, j] cv2.namedWindow("img", cv2.WINDOW_FREERATIO) cv2.imshow('img', dst) cv2.waitKey(0)
|
运行结果
左边为原图,右边为移动后的图片(由于图片过大,因此放大了一下)
其他
如果原图太大,当前屏幕无法进行显示
可以在imshow()
方法前面加入cv2.namedWindow("enhanced", cv2.WINDOW_FREERATIO)
,便可实现窗口自适应并可以进行相关放缩