从开源中国博客搬来,合并博客

实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频。这里先用安卓手机代替一下进行试验。大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域网内可以根据IP进行访问。Python+OpenCV2获取视频并进行显示人脸识别。

具体步骤

  • Step1:安装IP摄像头软件

    这个在应用商店里搜一下就行了

  • Step2:浏览器访问测试

    根据IP摄像头软件的提示从在同一个局域网中的PC的浏览器上进行访问(如:192。168.1.111:8080)

  • Step3:OpenCV获取视频

    视频的本质是不断变化的图片,而Python是可以直接通过URL/IP获得图片的,找到图片地址,就可以进行获取了代码如下:

resp = urllib.urlopen("http://192.168.1.128:8080/shot.jpg")
frame = resp.read()
  • Step4:进行图片转码

    上一步获得的图片OpenCV是无法直接处理的(你把它保存了再打开的话,算我没说),而这就涉及到了图片的存储格式的转换,将比特流转换成OpenCV里的图片格式,代码如下:

resp = urllib.urlopen("http://192.168.1.128:8080/shot.jpg")
frame = np.asarray(bytearray(resp.read()), dtype="uint8")
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
  • Step5:人脸识别

    这个就没什么说的了,将图片转码之后就和处理普通视频没什么差别了。完整代码如下:

#coding:utf-8
import cv2
import urllib2
import urllib
import numpy as np
cv2.namedWindow("test")#命名一个窗口
#cap=cv2.VideoCapture("http://192.168.1.128:8080/shot.jpg?rnd=190604?dummy=param.mjpg")#打开1号摄像头
#success, frame = cap.read()#读取一桢图像,前一个返回值是是否成功,后一个返回值是图像本身
# print success
success = True
resp = urllib.urlopen("http://192.168.1.111:8080/shot.jpg")
frame = np.asarray(bytearray(resp.read()), dtype="uint8")
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
color = (255,0,0)#设置人脸框的颜色
classfier=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")#定义分类器
while success:
#success, frame = cap.read()
resp = urllib.urlopen("http://192.168.1.111:8080/shot.jpg")
frame = np.asarray(bytearray(resp.read()), dtype="uint8")
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
size=frame.shape[:2]#获得当前桢彩色图像的大小
image=np.zeros(size,dtype=np.float16)#定义一个与当前桢图像大小相同的的灰度图像矩阵
image = cv2.cvtColor(frame, cv2.cv.CV_BGR2GRAY)#将当前桢图像转换成灰度图像
cv2.equalizeHist(image, image)#灰度图像进行直方图等距化
#如下三行是设定最小图像的大小
divisor=8
h, w = size
minSize=(w/divisor, h/divisor)
faceRects = classfier.detectMultiScale(image, 1.2, 2, cv2.CASCADE_SCALE_IMAGE,minSize)#人脸检测
if len(faceRects)>0:#如果人脸数组长度大于0
for faceRect in faceRects: #对每一个人脸画矩形框
x, y, w, h = faceRect
cv2.rectangle(frame, (x, y), (x+w, y+h), color)
cv2.imshow("test", frame)#显示图像
key=cv2.waitKey(10)
c = chr(key & 255)

OpenCV获取IP摄像头视频的更多相关文章

  1. opencv获取IP摄像头(IP-camera)实时视频流

    之前这篇文章讲了如何通过网络摄像头(web camera)获取实时视频流,但是这种方法的缺陷就是摄像头和主机必须连在一起,那这种在室外部署的时候就会非常麻烦并且不安全,所以后来找了下用海康威视或者大华 ...

  2. Opencv如何捕获摄像头视频-OpenCV步步精深

    捕获摄像头实时图像 这一点非常非常重要,因为这一点关乎了以后我们进行各种各样的识别(人脸识别,车牌识别等等有趣的识别).opencv提供了一个接口,可以轻松的让我们实现这个功能.我们先来看一段代码,根 ...

  3. Kafka+OpenCV 实现实时流视频处理

     1. 启动Kafka Server bin/kafka-server-start.sh config/server.properties & 2. 创建一个新topic bin/kafka- ...

  4. 【opencv】VideoCapture打不开本地视频文件或者网络IP摄像头

    1.前提:成功打开本地USB摄像头 // 创建VideoCapture对象 VideoCapture vc = new VideoCapture(); // 可以成功打开本地USB摄像头 // 参数可 ...

  5. 使用OpenCV进行网络摄像头的图像采集及视频存储

    rtspURL格式 rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 1) username ...

  6. python之OpenCv(五)---抓取摄像头视频图像

    OpenCV 可以通过 头videoCapture()方法打开摄像 摄像头变量 = cv2.VideoCapture(n)   n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,... ...

  7. 利用opencv从USB摄像头获取图片

    由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...

  8. Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比

    打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...

  9. OpenCV 连接 Android IP摄像头

    0.下载IP摄像头(android软件)并安装 比如这个(图标是一个灰色的摄像头的那个软件) 1.新建cpp文件,编译 #include "opencv2/opencv.hpp" ...

随机推荐

  1. 关于Json-lib类库的使用

    前言介绍: json-lib包是一个Java类库,它可以将Java对象(包括:beans,maps,collections,java arrays ,xml等)和JSON互相转换. 与此相同的是谷歌也 ...

  2. UML的学习

    1.什么是UML? 统一建模语言(UML,英语:Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的. ...

  3. RMAN:简单的duplicate创建新数据库 for 12c+

    构建参数文件 *.db_name='test2' ##### 需要注意的地方,和rman的duplicate目标库一致 *.compatible='18.0.0' ##### 关键的地方,每个版本的模 ...

  4. 让 Oracle 11g 32位运作在64位 Windows 上

    并非不能运行. 本人安装版未曾尝试,但绿色版倒是运行成功了. 很简单:注册表的位置发生了变化而已! 默认(32位.64位),oracle会读取以下注册表的位置:      [HKEY_LOCAL_MA ...

  5. 获取微信小程序源码

    https://blog.csdn.net/aaron9185/article/details/80576183 http://lrdcq.com/me/read.php/66.htm https:/ ...

  6. node.js富文本编辑器

    摘要: 最近在搭建自己的博客,这一段时间可能没有时间来写博客了,但是有了好东西还是要分享给大家.博客网站必然要有编辑文章的编辑器,所以在网上查了些资料.大部分编辑器的后台是基于java.php.asp ...

  7. AES-128-CBC加密

    C#: public static string AesKey = "sgg45747ss223455"; /// <summary> /// AES加密 (128-C ...

  8. Android Studio 视图解析

    AS一共同拥有三种视图.我们来分别分析每一种视图的作用. 一.Project视图.(白色字体的文件夹/文件可不关注) 图片中的链接 Gralde介绍:http://stormzhang.com/dev ...

  9. Aspose------导出Excel

    代码: /// <summary> /// 导出Excel /// </summary> /// <typeparam name="T">泛型类 ...

  10. Linux+Redis实战教程_day02_Linux系统上安装MySQL

    Linux系统上安装MySQL 安装MySQL 卸载自带mysql 查询mysql的安装情况,可以直接使用了 rpm -qa | grep -i mysql –-color 卸载原生的MySQL rp ...