Python OpenCV 裁剪圖片 crop

本篇介紹如何在 python opencv crop 裁剪圖片,

使用陣列索引裁剪圖片

在 python 中裁切圖片可以利用 numpy array 陣列索引取出想要的範圍,達成我們要裁剪影像的目的,
語法如下,

1
cropped = image[y:y+h,x:x+w]

第一個參數為y,也就是高度,第二個參數為x,也就是寬度,這樣就可以裁剪出(x, y)左上座標到(x+w, y+h)右下座標範圍之間的圖片了
來看看完整程式怎麼寫吧!
這邊我們裁剪 (0,0) 左上座標到 (512,128) 右下座標範圍的影像為例,

python3-opencv-crop.py
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2

img = cv2.imread('lena.jpg')
print(img.shape)
print(type(img))

cropped = img[0:128, 0:512]
cv2.imshow('image', img)
cv2.imshow('cropped', cropped)
cv2.waitKey(0)

程式輸出如下,

1
2
(512, 512, 3)
<class 'numpy.ndarray'>

結果就像下圖這樣,用另一個視窗顯示裁剪出來的圖片,

那再裁剪一個影像看看,這次我們裁剪 (128,0) 左上座標到 (512,256) 右下座標範圍的影像

1
cropped = img[0:256, 128:512]

把裁剪圖跟原圖放一起比對,確認一下,

參考
How to crop an image in OpenCV using Python - Stack Overflow
https://stackoverflow.com/questions/15589517/how-to-crop-an-image-in-opencv-using-python
Python 與 OpenCV 裁切圖片教學 - G. T. Wang
https://blog.gtwang.org/programming/how-to-crop-an-image-in-opencv-using-python/
Basic Image Manipulations in Python and OpenCV: Resizing (scaling), Rotating, and Cropping - PyImageSearch
https://www.pyimagesearch.com/2014/01/20/basic-image-manipulations-in-python-and-opencv-resizing-scaling-rotating-and-cropping/
Python实现图片裁剪的两种方式——Pillow和OpenCV_MrLittleDog的博客-CSDN博客_python 图片裁剪
https://blog.csdn.net/hfutdog/article/details/82351549

其它相關文章推薦
如果你在學習 Python 或 OpenCV 影像處理相關技術,可以參考看看下面的文章,
Python OpenCV 彩色轉灰階(RGB/BGR to GRAY)
Python OpenCV 彩色轉HSV(RGB/BGR to HSV)
Python OpenCV 彩色轉YCbCr(RGB/BGR to YCbCr)
Python OpenCV 影像邊緣偵測 Canny Edge Detection
Python OpenCV 顯示camera攝影機串流影像
Python OpenCV 垂直vconcat 和水平hconcat 影像拼接
Python 旋轉圖片 rotate
Python 圖片模糊化 blur
Python 新手入門教學懶人包
小專案 Python OpenCV 圖片轉字元圖畫