最近朋友圈喜欢跳一跳,最多也就能蹦到三百多分,凭个人经验,估计python的图片分析能搞定他,于是前天晚上就搞了下,大概能跑1万多分的样子,可惜微信不承认“冏”。
废话不多说,可是说下思路和想法。我用的手机是三星S7 edge,1440 x 2560个像素,两边时间弯曲屏,会导致颜色变化。
A点是棋子的中心坐标位置,B点是下一个台阶的最顶点坐标位置,因为棋子的中心周围的RGB数值不变,可以遍历棋子颜色的坐标所有位置,所有的X,Y坐标的中心值,就是棋子的中心位置。
A点的计算比较容易,就是由上到下,有右到左进行遍历,一旦发现颜色的RGB值不是背景的RGB值,则认为跳跃点出现。
在我的手机上,棋子中心的RGB是(57,57,99),遍历区域内所有的RGB,并计算出中心点,代码如下
def _getflag(): #取棋子所在位置的函数
flag_RGB = 57,57,99 #棋子的RGB值
flag_x_sum = 0 #所有具有中心RGB的X坐标总和
flag_x_num = 0 #所有具有中心RGB的X坐标个数;两个数值的商即是中心RGB的X坐标,同理Y坐标
flag_y_sum = 0
flag_y_num = 0
for flag_y in range(jump_box_top, jump_box_buttom,5): #遍历整个跳跃位置
for flag_x in range(jump_box_left, jump_box_right,5):
flag_xy = flag_x,flag_y
flag_pixel = img_pixel.getpixel(flag_xy)
if (abs(flag_pixel[0] - flag_RGB[0]) <