利用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 pickle 和 shelve模块的用法
Sep 16 Python
python解析中国天气网的天气数据
Mar 21 Python
Python中文编码那些事
Jun 25 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
python创建进程fork用法
Jun 04 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python中的进程分支fork和exec详解
2015/04/11 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
Python中调用其他程序的方式详解
2019/08/06 Python
python生成特定分布数的实例
2019/12/05 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
python+OpenCV实现图像拼接
2020/03/05 Python
python给list排序的简单方法
2020/12/10 Python
文员自我评价怎么写
2013/09/19 职场文书
导游的职业规划书范文
2013/12/27 职场文书
大课间体育活动方案
2014/03/12 职场文书
团队精神口号
2014/06/06 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2014年质检工作总结
2014/11/26 职场文书
广告业务员岗位职责
2015/02/13 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
在职证明书模板
2015/06/15 职场文书
公司备用金管理制度
2015/08/04 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
python实现图片批量压缩
2021/04/24 Python