gpt4 book ai didi

python - 如何从 JPEG 裁剪多个矩形或正方形?

转载 作者:行者123 更新时间:2023-11-28 20:30:53 25 4
gpt4 key购买 nike

我有一个 jpeg,我想从中裁剪包含图形的部分(底部的那个)。

到目前为止,我使用这段代码实现了相同的目的:

from PIL import Image

img = Image.open(r'D:\aakash\graph2.jpg')
area = (20, 320, 1040, 590)
img2 = img.crop(area)
# img.show()
img2.show()

但我通过多次猜测 x1、y1、x2、y2 来实现这一点(猜测工作)。

裁剪前的图像: enter image description here

裁剪后的图像: enter image description here

我在基于某种逻辑的图像裁剪方面完全是新手。如果位置相同,我如何才能成功裁剪所有图表以创建单独的图像?

更新:我相信,这不可能是该问题的重复,因为尽管逻辑上相同,但集群逻辑的工作方式不同。在那个问题中,只有两条垂直的白线可以划分,但是这里有两条水平线和两条垂直线,我几乎不知道如何使用 KMeans 来解决这种图像聚类问题。

非常感谢sklearn 的 KMeans 专家帮助解决此类问题。

最佳答案

这是另一种方法,但使用 PIL/Pillow 和 skimage 而不是 OpenCV:

#!/usr/local/bin/python3

import numpy as np
from PIL import Image, ImageFilter
from skimage.measure import label, regionprops

# Load image and make Numpy version and greyscale PIL version
pim = Image.open('article.jpg')
n = np.array(pim)
pgr = pim.convert('L')

# Threshold to make black and white
thr = pgr.point(lambda p: p < 230 and 255)
# Following line is just for debug
thr.save('result-1.png')

# Median filter to remove noise
fil = thr.filter(ImageFilter.MedianFilter(11))
# Following line is just for debug
fil.save('result-2.png')

# Make Numpy version for skimage to use
nim = np.array(fil)

# Image is now white blobs on black background, so label() it
label_image=label(nim)

# Iterate through blobs, saving each to disk
i=0
for region in regionprops(label_image):
if region.area >= 100:
# Extract rectangle containing blob and save
name="blob-" + str(i) + ".png"
minr, minc, maxr, maxc = region.bbox
Image.fromarray(n[minr:maxr,minc:maxc,:]).save(name)
i = i + 1

这给出了这些输出图像:

enter image description here

enter image description here

enter image description here

enter image description here

中间的调试图像是result-1.png:

enter image description here

result-2.png:

enter image description here

关于python - 如何从 JPEG 裁剪多个矩形或正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com