博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QPython 打造一个全自动智能微信跳一跳辅助!(手机本地运行)
阅读量:6462 次
发布时间:2019-06-23

本文共 2404 字,大约阅读时间需要 8 分钟。

先上成果效果图:

超级瞄准已部署!

精确定位目标中心!

 

用opencv 做识图识别出棋子的坐标并把它框出来

终点位置的坐标是:

先观察图像发现棋子每跳过后的下一个目标点总是在棋子的上面

这样就可以先获取一个感兴趣的区域,用numpy切出自己感兴趣的区域

然后高斯模糊一下,找寻图像中的轮廓效果特别棒!

 

 

如图:

然后找出感兴趣的区域也就是中间那一块

接着寻找终点的位置:

用十字把它标出来:

 

 接下来框出棋子的位置:

标出两点的位置:

然后根据棋子和终点的坐标建立一个三角函数公式

连线两点的位置

测试压力系数为1.8

然后模拟点击和截屏循环运行就可以了

更多效果图片:

跳到正中间!

各种方块都测试通过

 

 

最后上代码:

1 # -*- coding:utf-8 -*- 2 import cv2,show 3 import numpy as np  4 import math 5 import time 6 import dian 7 v=0 8 while v<1: 9    v=v+110    img = cv2.imread('/sdcard/3.png')  11    #img1 = cv2.imread('/sdcard/52.png')  12    img1=img13    hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)14    lower_blue = np.array([110,50,50])15    upper_blue = np.array([130,255,255])16    mask = cv2.inRange(hsv, lower_blue, upper_blue)  17    ret, binary = cv2.threshold(mask,0,255,cv2.THRESH_BINARY) 18    contours, hierarchy = cv2.findContours(binary,1,cv2.CHAIN_APPROX_SIMPLE)  19    cnt=contours[len(contours)-1]20    a=021    dict={}22    for i in contours:23        dict[len(i)]=a24        a=a+125    li=np.sort([l for l in dict.keys()],axis=0)[::-1]26    x, y, w, h = cv2.boundingRect(contours[dict[li[0]]])27    cv2.rectangle(img1, (x, y), (x+w, y+h), (0,255,0), 5)28    qi=[x,y,w,h]29    img2=img1[350:1660]  30    img2 = cv2.GaussianBlur(img2,(3,3),0)  31    canny = cv2.Canny(img2, 50, 150)  32    b=033    lk=[]34    for i in range(canny.shape[0]):35        x=canny[i]36        a=037        if b==1:38            break39        for c in x:40            a=a+141            if c==255:42                lk.append([i+350,a])43                b=144    cv2.line(img1,(lk[0][1]+20,lk[0][0]),(lk[0][1]-20,lk[0][0]),(255,0,0),5)45    cv2.line(img1,(lk[0][1],lk[0][0]+20),(lk[0][1],lk[0][0]-20),(255,0,0),5)46    zhon=[lk[0][1],lk[0][0]]47    qil=[qi[0]+int(qi[2]/2),qi[1]+qi[3]]48    print('起点')49    print(qil)50    print('终点')51    print(zhon)52    cv2.line(img1,(qil[0]+20,qil[1]),(qil[0]-20,qil[1]),(0,0,255),5)53    cv2.line(img1,(qil[0],qil[1]+20),(qil[0],qil[1]-20),(0,0,255),5)54    cv2.line(img1,(qil[0],qil[1]),(zhon[0],zhon[1]),(255,0,0),5)55    yl=qil[1]-zhon[1]56    xl=qil[0]-zhon[0]57    #print(xl,yl)58    lcd=int(yl*yl)+int(xl*xl)59    cd=int(math.sqrt( lcd ))60    print('长度按压时间:')61    an=int(cd*1.18)62    print(an)63    dian.dian(str(an))64    time.sleep(2)65    show.show(img1)

依赖库

import cv2,showimport numpy as np import math 其它为一些辅助,注释掉即可!

转载于:https://www.cnblogs.com/ksxh/p/9047492.html

你可能感兴趣的文章
ASP.NET性能优化之分布式Session
查看>>
转载:《TypeScript 中文入门教程》 16、Symbols
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>
Linux系统编程——进程调度浅析
查看>>
大数据Lambda架构
查看>>
openCV_java 图像二值化
查看>>
状态模式
查看>>
删除CentOS / RHEL的库和配置文件(Repositories and configuraiton files)
查看>>
VC++获得微秒级时间的方法与技巧探讨(转)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
MySQL my.cnf参数配置优化详解
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
PXE部署实例
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
Android Studio 2.0 preview3 BUG
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>