学习OpenCV
前言
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。
使用OpenCV可以方便的进行图像识别和图像处理,因此我打算学习学习。OpenCV在安装Python环境非常简单只需要下载opencv-2.4.9.exe
安装。
将"\opencv\build\python\2.7\x64"或"\opencv\build\python\2.7\x86"文件夹中cv2.pyd,复制到Python安装的"C:\Python27\Lib\site-packages"文件夹中。
下面是测试代码:
#导入cv模块
import cv2 as cv
#读取图像,支持 bmp、jpg、png、tiff 等常用格式
img = cv.imread("D:\python\test.jpg")
#创建窗口并显示图像
cv.namedWindow("Image")
cv.imshow("Image",img)
cv.waitKey(0)
#释放窗口
cv2.destroyAllWindows()
但是Python库已经把OpenCV的大部分接口都封装了,看不到内部逻辑,不过上手快额。我这里是使用go语言调用OpenCV完成一个项目。
goOpenCv项目
项目地址【Gitee】,【Github】,大家可自行拿去学习。
本项目通过go语言获取截屏连连看的图像,通过OpenCV识别连连看每一个动物,进行匹配标记相同动物所处位置,并实现算法模拟鼠标点击来玩连连看游戏。
主要使用opencv2.4.9版本,通过cgo调用相关dll中的方法,特别注意我使用的第三方库(go调用OpenCV库)有很多接口都没有实现,我通过查看OpenCV的.h头文件查看所需方法自己实现。
在OpenCvPath/src/github.com/go-opencv/go-opencv/opencv/janbar.go
文件中的几个OpenCV方法就是我实现的,大家可以参考自行添加自己需要的方法吧。
关于本项目的安装教程,以及编译方法都在readme里面,需要注意的是要用runPet.exe
来运行pet.swf
,让窗口保持合适大小,因为图像匹配需要精确大小。
下面是效果图:
总结
通过本项目学习了OpenCV的基本用法,其实OpenCV能做到的还有很多,这里也只是粗略学习了一下。以后有别的图像方面需求,可以快速上手就行。
通过这个项目加深了对go从国cgo调用dll库的认识,不像Python那样啥都弄好了。要做到知其然并知其所以然,这样才能游刃有余的应对各种问题。
玩连连看的算法也是超级简单,不过还是锻炼了一把我的编码和思考能力。我感觉我越来越有写外挂的天赋了,哈哈。