因此,我一直在尝试编写Python脚本,该脚本以图像作为输入,然后切出具有特定背景颜色的矩形。但是,导致我的编码技能出现问题的是,矩形并不是在每个图像中都位于固定位置上(该位置是随机的)。
我不太了解如何管理numpy函数。我还阅读了一些有关OpenCV的内容,但我是一个新手。到目前为止,我只是通过“ .crop”功能裁剪了图像,但随后我将不得不使用固定值。
这是输入图像的外观,现在我想检测黄色矩形的位置,然后将图像裁剪到其大小。
非常感谢您的帮助,谢谢。
在opencv中,您可以使用inRange。基本上,这使您指定范围内的任何颜色变为白色,其余颜色变为黑色。这样所有的黄色将变成白色。
这里是文档:https://docs.opencv.org/3.4/da/d97/tutorial_threshold_inRange.html
[好,您的黄色是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')