Python-1 试玩OpenCV
昨天同事说微信更新有跳一跳小游戏,便更新了玩一玩。至于抄袭不抄袭我不讨论,看玩法和色彩都很简洁。想用Python试试摄像头捕捉图像,然后分析距离每次都能跳到中心,有生物机械手指之类的再弄到树莓派上岂不是能玩最高分啦。 -心路历程
环境是windows,安装opencv
pip install opencv-python
需要其他包的可另行下载。
hello, OpenCV
import cv2 as cv
img=cv.imread("404.jpg") #读取图像
cv.imshow("who",img)
cv.waitKey(0)
cv.destroyAllWindows()

hallo, camera
打开摄像头
#打开摄像头
import cv2
import numpy
import matplotlib.pyplot as plot
#摄像头对象
cap=cv2.VideoCapture(0)
#显示
while(1):
ret,frame = cap.read()
cv2.imshow("capture",frame)
if(cv2.waitKey(1) & 0xFF==ord('q')):
break
cap.release()
cv2.destroyAllWindows()

按q退出时,为什么要用0xFF呢?& 比 == 优先级高,所以先截取最后八位,再做比较。
保存图片
摄像头打开后就要保存图片,也很方便呢。
#保存图片
import cv2
cap = cv2.VideoCapture(0)
i=0
while(1):
ret, frame = cap.read()
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord(' '):
i=i+1
imgName="i_"+str(i)
cv2.imwrite("img/"+imgName+".jpeg", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
比上一版的多了一个按空格保存图片,虽然然触体验并不好,但是感觉好爽啊,Python真方便,写那些库的人更牛啊。

处理图片
进跳一跳游戏抓取一张图

看看都可以干些什么,应该是去噪什么的吧(其实我都不懂,手动笑cry.jpg
想要获取距离,看大家都在说二值化那就二值化试试效果:
图像信息二值化
import cv2 as cv
#灰度模式读取图像
img=cv.imread("img/i1.jpeg",0)
#设置阈值进行二值化
th=100
ret,binary1=cv.threshold(img,th,255,cv.THRESH_BINARY_INV)
ret,binary2=cv.threshold(img,th,255,cv.THRESH_BINARY)
ret,binary3=cv.threshold(img,th,255,cv.THRESH_TRUNC)
ret,binary4=cv.threshold(img,th,255,cv.THRESH_TOZERO)
ret,binary5=cv.threshold(img,th,255,cv.THRESH_TOZERO_INV)
ret,binary6=cv.threshold(img,th,255,cv.THRESH_OTSU)
ret,binary7=cv.threshold(img,th,255,cv.THRESH_TRIANGLE)
cv.imshow("THRESH_BINARY_INV",binary1)
cv.imshow("THRESH_BINARY",binary2)
cv.imshow("THRESH_TRUNC",binary3)
cv.imshow("THRESH_TOZERO",binary4)
cv.imshow("THRESH_TOZERO_INV",binary5)
cv.imshow("THRESH_OTSU",binary6)
cv.imshow("THRESH_TRIANGLE",binary7)
cv.waitKey(0)
cv.destroyAllWindows()

显示轮廓

费了好大力才走到这步,然后没有头绪,各种公式各种图像处理看不懂,还是获取不了距离,下了matplotlib和numpy库也还没用上。
最后,就混合一下所学的东西吧。
显示边缘轮廓
#摄像头并显示轮廓
import cv2
cap = cv2.VideoCapture(0)
i=0
while(1):
ret, frame = cap.read()
img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
img_gb = cv2.GaussianBlur(img_gray, (5, 5), 0)
edges = cv2.Canny(img_gb, 100 , 200)
cv2.imshow("capture", edges)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

18年一定要多读书要努力学习啊我的豆。
参考资料
Python-1 试玩OpenCV的更多相关文章
- ESP32 LyraT音频开发板试玩(一):搭建开发环境
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...
- 关于python环境下的opencv安装
吐槽: 这一天我终于记起了这个博客.今天搞python环境下的opencv,又弄了一天,很烦躁.之前配置VS的opencv也是花了好久的时间,然后突然发现之前记录在电脑上的文档都找不到了,于是决定还是 ...
- 试玩 GOWOG ,初探 OpenAI(使用 NeuroEvolution 神经进化)与 Golang 多人在线游戏开发
GOWOG: 原项目:https://github.com/giongto35/gowog 我调整过的:https://github.com/Kirk-Wang/gowog GOWOG 是一款迷你的, ...
- HTML5+JS 《五子飞》游戏实现(七)游戏试玩
前面第一至第六章我们已经把<五子飞>游戏的基本工作都已经讲得差不多了,这一章主要是把所有的代码分享给大家,然后小伙伴们也可以玩一玩. 至于人机对战的我们放到后面讲进行分析. 试玩地址:ht ...
- 一个小玩意 PHP实现微信红包金额拆分试玩
<meta charset="utf-8"> <?php // 新年红包金额拆分试玩 class CBonus { public $bonus;//红包 publ ...
- 1.2G内存试玩RAMOS_XP
1.2G内存试玩RAMOS_XP1.为了防止做系统时出现意外,用Bootice把C盘MBR修改为Grub4dos,这样子系统如果失败,可以进入PE重做. 2.进入PE格式化C盘,格式化的时候勾选启用N ...
- 8个经典的HTML5游戏在线试玩及源码学习
原文地址:http://www.oschina.net/news/32364/html5-games 游戏,毫无疑问是拿来供大家娱乐玩耍的,这也无可厚非,但是,今天给大家分享的8个HTML5游戏,在好 ...
- Apollo框架试玩
2017年7月5日,百度举行了AI开发者大会,在会上发布了Apollo项目,并进行了演示,该项目在Github上已经能够被访问.出于一个程序员的好奇,昨天试玩了一把,确实不错. http://apol ...
- 发布到FaceBook试玩广告,FaceBook要求要一个Html文件
Facebook 试玩广告具体要求: 试玩广告参数是创建试玩广告素材时要满足的要求. 试玩素材应为 HTML5 格式. 试玩广告素材不应使用 mraid.js 格式. 包含所有素材的试玩广告的单个 H ...
随机推荐
- jira发送邮件报错
jira发送邮件的报错 1.安装完jira后,配置发送邮件出错具体报错如下: An error has occurred with sending the test email: com.atlass ...
- org.apache.ibatis.binding.BindingException: Invalid bound statement
idea中出现了这个问题 我的解决方案是: 把mapper映射文件放到资源目录下 然后就行了. 当然,这个具体原因就是:mapper.xml和接口对不上引起的,具体问题还要具体解决 协助博客:http ...
- MS DSVM、DLVM
DSVM(Data Science Virtual Machine 数据科学虚拟机) 是专为研究数据科学生成的 Microsoft Azure 云上的自定义 VM 映像.它预装并预配了许多热门数据科 ...
- 关于IP核中中断信号的使用---以zynq系统为例
关于IP核中中断信号的使用---以zynq系统为例 1.使能设备的中断输出信号 2.使能处理器的中断接收信号 3.连接IP核到处理器之间的中断 此处只是硬件的搭建,软件系统的编写需要进一步研究. 搭建 ...
- mac系统 Xcode打包ionic项目(iOS)
一.环境搭建 1. 安装Node.js,使用node -v 查询版本号: 2. 安装ionic: $ sudo npm install -g cordova(可以指定版本,如cordova@7.0.1 ...
- excel技巧--单元格合并与拆分
如果要将上图的地区列做成下图的合并单一列: 有如下做法: (以下图表格为例) 1.选择要排序的表格,点击“开始”-->排序和筛选-->自定义排序.在对话框选择“业务项目”进行排序: 2.选 ...
- ubuntu 阿里云 常出问题 运维工作日志
一.2015-8.26(数据库 error—28) tmp文件临时数据写入不了----解决办法 1.查看临时文件 ls -l 找到了 2.由此可以查看得出来tmp文件有的权限是有的 3.查看tmp 存 ...
- 黄聪:超实用的PHPExcel[导入][导出]实现方法总结
首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...
- Java第03次实验提纲(面向对象1-基本概念)
0. 将码云的项目clone到本机 请参考使用Eclipse Egit与码云管理你的代码中的3 从码云将项目clone到你的电脑 之后就可以在Eclipse中提交本地项目新增或修改的文件.如果在Ecl ...
- LINUX 内存使用情况
# free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KBused 已使用的内存 7852484KBfree 空闲的内存数 205480KBshared 当前已经 ...