Python:如何从图像中切出具有特定颜色的区域(OpenCV,Numpy)

问题描述 投票:1回答:2

因此,我一直在尝试编写Python脚本,该脚本以图像作为输入,然后切出具有特定背景颜色的矩形。但是,导致我的编码技能出现问题的是,矩形并不是在每个图像中都位于固定位置上(该位置是随机的)。

我不太了解如何管理numpy函数。我还阅读了一些有关OpenCV的内容,但我是一个新手。到目前为止,我只是通过“ .crop”功能裁剪了图像,但随后我将不得不使用固定值。

这是输入图像的外观,现在我想检测黄色矩形的位置,然后将图像裁剪到其大小。

非常感谢您的帮助,谢谢。

An example of how the picture could look

python numpy opencv python-imaging-library crop
2个回答
0
投票

在opencv中,您可以使用inRange。基本上,这使您指定范围内的任何颜色变为白色,其余颜色变为黑色。这样所有的黄色将变成白色。

这里是文档:https://docs.opencv.org/3.4/da/d97/tutorial_threshold_inRange.html


0
投票

[好,您的黄色是rgb(247,213,83),所以我们要查找所有黄色像素的X,Y坐标:

#!/usr/bin/env python3

from PIL import Image
import numpy as np

# Open image and make into Numpy array
im = Image.open('image.png').convert('RGB')
na = np.array(im)

# Find X,Y coordinates of all yellow pixels
yellowY, yellowX = np.where(np.all(na==[247,213,83],axis=2))

top, bottom = yellowY[0], yellowY[-1]
left, right = yellowX[0], yellowX[-1]

# Extract Region of Interest
ROI=na[top:bottom, left:right]

Image.fromarray(ROI).save('result.png')

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.