利用python打开摄像头及颜色检测方法


Posted in Python onAugust 03, 2018

最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了。。。。,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,…下面我就汇报下今天的学习成果吧

小编运行环境unbuntu 14.0.4

首先我们先安装一下Python呗,我用的2.7,其实特别简单,一行指令就OK

sudo apt-get install python-dev

一般安装系统的时候其实python已经自带了,这步基本可以不用做,OK,我们继续往下走吧,安装python-opencv ,稍后我们需要用到opencv的库,一行指令即可,这也是小编特别喜欢linux的原因:

sudo apt-get install python-opencv

完成之后我们开始操作吧,首先同样的我们打开摄像头露个脸呗,不多说,上代码, vim pythonpractice.py 打开vim,copy以下代码即可(友情提示 python是有严格的缩进的,下面我都是四个空格缩进,各位不要复制错了):lo

lmport cv2
import numpy as np#添加模块和矩阵模块
cap=cv2.VideoCapture(0)
#打开摄像头,若打开本地视频,同opencv一样,只需将0换成("×××.avi")
while(1): # get a frame 
 ret, frame = cap.read() # show a frame 
 cv2.imshow("capture", frame) 
 if cv2.waitKey(1) & 0xFF == ord('q'):  
  break
cap.release()
cv2.destroyAllWindows()
#释放并销毁窗口

保存退出

python pythonpractice.py

小脸蛋即可出现在你的屏幕上了,下面稍微添加几行有意思的代码吧,实现蓝色背景检测,我这有瓶蓝色脉动,正好做个小实验。

import cv2
import numpy as np
cap = cv2.VideoCapture(0)# set blue thresh
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
while(1): # get a frame and show 
 ret, frame = cap.read() 
 cv2.imshow('Capture', frame) # change to hsv model 
 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # get mask 
 mask = cv2.inRange(hsv, lower_blue, upper_blue) 
 cv2.imshow('Mask', mask) # detect blue 
 res = cv2.bitwise_and(frame, frame, mask=mask) 
 cv2.imshow('Result', res) 
 if cv2.waitKey(1) & 0xFF == ord('q'):  
  breakcap.release()
cv2.destroyAllWindows()

同样python pythonpractice.py 运行一下,可以把手机换成蓝色背景检测以下,下面时间就交给各位理解了,代码很简单,只有简单的几行程序。

下面有个复杂点颜色识别的代码

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import time
readlower=np.array([156,179,144])
readupper=np.array([180,255,255])
readlower1 = np.array([0, 128, 146])
readupper2 = np.array([5, 255, 255])
lowerarry=[[readlower,readupper,'red'],[readlower1,readupper2,'red1']]
capture=cv2.VideoCapture('4.mp4')
while True:
 ret,frame=capture.read()
 print frame.shape
 frame=cv2.resize(frame,(640,480))
 if ret==False:
  print("video is erro")
 #cv2.imshow('xiaorun',frame)
 hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
 for colormin,colermax,name in lowerarry:
  mask=cv2.inRange(hsv,colormin,colermax)
  #res = cv2.bitwise_and(frame, frame, mask=mask)
 #mask=cv2.erode(mask,None,iterations=1)
 mask=cv2.dilate(mask,None,iterations=25)
 ret, binary = cv2.threshold(mask,15, 255, cv2.THRESH_BINARY)
 cv2.imshow('result',binary)
 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (21, 7))
 closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
 cv2.imshow('closed', closed)
 #erode = cv2.erode(closed, None, iterations=4)
 #cv2.imshow('erode', erode)
 dilate = cv2.dilate(closed, None, iterations=50)
 cv2.imshow('dilate', dilate)
 _,contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
 #res=_.copy()
 for con in contours:
  x, y, w, h = cv2.boundingRect(con) # 将轮廓分解为识别对象的左上角坐标和宽、高
  # 在图像上画上矩形(图片、左上角坐标、右下角坐标、颜色、线条宽度)
  cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0,0), 3)

 cv2.imshow('res',frame)
 key=cv2.waitKey(1)
 if key==ord('q'):
  break

小编只是想说明以下,一定要学以致用,任何一种编程语言都是倒腾两天就直接上手的,按部就班的学习语法,那样不知何时才能出师了,祝各位玩得high在机器视觉上

以上这篇利用python打开摄像头及颜色检测方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
Python中的变量和作用域详解
Jul 13 Python
详解supervisor使用教程
Nov 21 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python绘制简单彩虹图
Nov 19 Python
python版飞机大战代码分享
Nov 20 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
python如何输出反斜杠
Jun 18 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
Python 键盘事件详解
Nov 11 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
numpy添加新的维度:newaxis的方法
Aug 02 #Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 #Python
对numpy中的transpose和swapaxes函数详解
Aug 02 #Python
Numpy 改变数组维度的几种方法小结
Aug 02 #Python
python 字典中取值的两种方法小结
Aug 02 #Python
python 剪切移动文件的实现代码
Aug 02 #Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 #Python
You might like
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php xhprof使用实例详解
2019/04/15 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
flask-restful使用总结
2018/12/04 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python程序文件扩展名知识点详解
2020/02/27 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
python实现126邮箱发送邮件
2020/05/20 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
党员自我评议对照检查材料
2014/09/27 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
宿舍管理制度范本
2015/08/07 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers