守望先锋--MATLAB图像处理辅助Try2

该博客介绍了使用MATLAB进行图像处理来辅助识别《守望先锋》游戏中敌人的方法。通过分析RGB颜色,特别是深红色轮廓,提出两种思路:针对单人的简单思路是找到人物中心线;针对多人的复杂思路则涉及对列和的判断,以确定人物是否叠加。由于复杂性及速度问题,仅实现了颜色提取部分的算法。

    经过我多次人机截图进行RGB分析,发现人物的除了血条的特征外还有另一个特征是敌人会有一个红色的外轮廓,这个外轮廓由三层组成:

浅红——深红——浅红


于是我想到提取中间的深红色,连续程度最高,颜色最稳定。

简单思路(特殊情况:单人):

(1)先提取出外轮廓中的深红色(需要的色变为1,其他色变为0)

(2)逐行扫描,每行必定只有左右两个值,然后对其求平均得中点

(3)一系列中点连起来,就得到了人物的中心线,于是想打哪打哪。。

复杂思路(实际情况:多人):

很遗憾,一般屏幕上出现的不会是一个人,而是多个人,有可能多个人分离(一般情况),但是团战的时候往往都可能两个人的身形叠加于一起,于是综合思路:

参考血条算法的思路

(1)提取外轮廓中的深红色(需要的色变为1,其他色变为0)

(2)对每一列求和,此处应明白,一个人的身形,列和绝大部分为2(可能边缘大于2,但是只有几列)

(3)判断,大于2的列的个数

         如果大于10,说明两人身影叠加,2,2...2,4,4...4,,2,2...,此时“红色2”的位置作为鼠标命中点

        如果小于10,说明每个人的身影分离,或者直接单人,此时2,2,....2,0,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值