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

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

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

我能够截取图像,裁剪出小 map 的大致位置。但是,我无法从中获得确切的小 map 边界框。

我的原始灰度图像:

模糊和脱粒图像: enter image description here

我想做的: enter image description here

由于我对 OpenCV 和图像处理还很陌生,所以我不确定我需要采取哪些步骤来完成这项任务。

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

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

最佳答案

如果您知道感兴趣区域的确切坐标,并且该区域始终固定在同一位置,您可以使用任何 drawing functions使用已知的 x,y 坐标; 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 轴降序,依此类推,您可以找到 map 的边距。

坐标 100 100 处的像素值示例(python):

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

px = img[100,100]
print px

对于 fast, optimized "for" pixel loops with OpenCV and Python 的解析阅读这篇文章

关于Python-OpenCV 查找矩形并裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274378/

相关文章:

python - python2 存在 site-packages 文件夹,python3 不存在

C++ OpenCV 消除较小的轮廓

android - 如何在Android的OpenCV中优化我的算法?

python - 为什么即使链接在服务器上,我也会收到 "404 Not Found"错误?

javascript - 从 Python 解释 Javascript

python - 如何为 python3 安装 netfilterqueue?

使用格式说明符的 Python 中心字符串

python - 在 iPython 控制台中运行代码的中间部分

python - 有没有办法限制提交给 worker 池的数量?

opencv - 关于如何使用混合高斯 opencv 实现的任何教程/好的文档?