利用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 正则表达式实现计算器功能
Apr 29 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
详解Python装饰器
Mar 25 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
python提取log文件内容并画出图表
Jul 08 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
python——全排列数的生成方式
Feb 26 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
Python数据分析入门之数据读取与存储
May 13 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 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
咖啡知识大全
2021/03/03 新手入门
BBS(php & mysql)完整版(七)
2006/10/09 PHP
加速XP搜索功能堪比vista
2007/03/22 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP文件操作详解
2016/12/30 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
选择python进行数据分析的理由和优势
2019/06/25 Python
pow在python中的含义及用法
2019/07/11 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
消防器材管理制度
2014/01/28 职场文书
网站创业计划书
2014/04/30 职场文书
宿舍标语大全
2014/06/19 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
公务员处分决定书
2015/06/25 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫