如何在python中对图像的某个部分进行切片?
Posted
技术标签:
【中文标题】如何在python中对图像的某个部分进行切片?【英文标题】:How to slice a certain portion of an image in python? 【发布时间】:2019-11-04 12:56:57 【问题描述】:我有一张在深色背景中有一张嘴巴照片的输入图像: input image
我只想要嘴部分作为输出: output image
【问题讨论】:
考虑使用image processing library,如 PIL/Pillow。 看看这个***.com/questions/13538748/… 【参考方案1】:试试这个Crop black edges with OpenCV
import numpy as np
import cv2
img = cv2.imread('./data/q18.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#play with parameters that all I changed in answer
_,thresh = cv2.threshold(gray,20,255,cv2.THRESH_BINARY)
# and here are 3 value returned not 2
_,contours,_ = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
x,y,w,h = cv2.boundingRect(cnt)
crop = img[y:y+h,x:x+w]
cv2.imwrite('./data/q18_1.png',crop)
输出:
【讨论】:
【参考方案2】:使用https://scikit-image.org/ 库。您可以像下面这样简单地裁剪它。
from skimage import io
image = io.imread(filename)
cropped = image[x1:x2,y1:y2]
【讨论】:
他大概在说这个***.com/questions/13538748/…【参考方案3】:像这样使用 PIL/Pillow:
#!/usr/bin/env python3
from PIL import Image
# Load image and convert to greyscale
im = Image.open('mouth.png').convert('L')
# Threshold at 40
thr = im.point(lambda p: p > 40 and 255)
# Find bounding box
bbox = thr.getbbox()
# Debug
print(bbox)
# Crop and save
result = im.crop(bbox)
result.save('result.png')
样本输出
(70, 155, 182, 223)
【讨论】:
以上是关于如何在python中对图像的某个部分进行切片?的主要内容,如果未能解决你的问题,请参考以下文章