Python-OpenCV查找矩形和裁剪图像

时间:2018-09-11 11:00:10

标签: python python-3.x opencv image-processing

我正在尝试制作一个游戏机器人,在此过程中,需要找到小地图,并将其裁剪掉,这样我才能弄清楚玩家的位置。

我能够拍摄图像的屏幕截图,裁剪出小地图所在的位置。但是,我无法从中获得确切的小地图边界框。

我原来的灰色图片:

图像模糊不清: enter image description here

我想做的是: enter image description here

由于我是OpenCV和图像处理的新手,所以我不确定要完成此任务需要采取哪些步骤。

我应该采取什么步骤来找到小地图的边界框/坐标?

编辑:当我的意思是“知道确切的边界框”时,我不清楚。我需要从图像中准确提取小地图区域。除了小地图的左上角之外,我没有任何坐标信息,并且小地图的大小根据地图的大小而变化,因此我无法对坐标进行硬编码。

1 个答案:

答案 0 :(得分:0)

如果您知道感兴趣区域的确切坐标,并且始终将该区域固定在同一位置,则可以使用具有已知x,y坐标的drawing functions中的任何一个; h,w尺寸。

void cv::rectangle  (   InputOutputArray    img,
Point   pt1,
Point   pt2,
const Scalar &  color,
int     thickness = 1,
int     lineType = LINE_8,
int     shift = 0 
)

要查找动态w,h::从已知的左上角坐标开始,逐像素解析图像,并将读取的像素的颜色与已知像素进行比较,首先在x轴上递增,直到您发现不匹配的像素。 y轴上的第二个下降,依此类推,您可以找到地图的边缘。

坐标100100(python)上的像素值示例:

img = cv2.imread('myImage.png')

px = img[100,100]
print px

要进行解析,请阅读fast, optimized "for" pixel loops with OpenCV and Python的这篇文章