剪裁图像
这篇教学会介绍使用 OpenCV,将图片剪裁出想要的范围,并另存成新的图片。
快速导览:
因为程序中的 OpenCV 会需要使用镜头或 GPU,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda ) ,并安装 OpenCV 函数库 ( 参考:OpenCV 函数库 )。
使用数组切片裁剪图片
在 OpenCV 里读取的图像,实质上是 NumPy 的数组,因此在读取图像后,使用数组的切片方式,取出想要的范围,另存成新的图片,就可以实现剪裁图片的效果,下方的程序码会从图片中 (100,100) 的位置,剪裁出一个 200x200 的区域储存为新图像。
参考:NumPy 数组项目赋值
import cv2
img = cv2.imread('meme.jpg')
x = 100
y = 100
w = 200
h = 200
crop_img = img[y:y+h, x:x+w] # 取出陣列的範圍
cv2.imwrite('output.jpg', crop_img) # 儲存圖片
cv2.imshow('oxxostudio', crop_img)
cv2.waitKey(0) # 按下任意鍵停止
cv2.destroyAllWindows()
将裁剪的图片,贴到其他图片中
运用同样的原理 ( 剪裁出来的区域是数组 ),就能将剪裁的区域,放到其他图片中指定的位置,下方的程序码,会将剪裁出来的图片,放到另外一张黑色画布中 (100, 100) 的位置。
import cv2
import numpy as np
img = cv2.imread('meme.jpg')
x = 100
y = 100
w = 200
h = 200
crop_img = img[y:y+h, x:x+w]
output = np.zeros((360,480,3), dtype='uint8')
output[x:x+w, y:y+h]=crop_img
cv2.imwrite('output.jpg', output)
cv2.imshow('oxxostudio', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
微信扫码关注
抖音扫码关注