OpenCV获取IP摄像头视频
从开源中国博客搬来,合并博客
实验室做一个智能小车的小项目,期间涉及到在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摄像头视频的更多相关文章
- opencv获取IP摄像头(IP-camera)实时视频流
之前这篇文章讲了如何通过网络摄像头(web camera)获取实时视频流,但是这种方法的缺陷就是摄像头和主机必须连在一起,那这种在室外部署的时候就会非常麻烦并且不安全,所以后来找了下用海康威视或者大华 ...
- Opencv如何捕获摄像头视频-OpenCV步步精深
捕获摄像头实时图像 这一点非常非常重要,因为这一点关乎了以后我们进行各种各样的识别(人脸识别,车牌识别等等有趣的识别).opencv提供了一个接口,可以轻松的让我们实现这个功能.我们先来看一段代码,根 ...
- Kafka+OpenCV 实现实时流视频处理
1. 启动Kafka Server bin/kafka-server-start.sh config/server.properties & 2. 创建一个新topic bin/kafka- ...
- 【opencv】VideoCapture打不开本地视频文件或者网络IP摄像头
1.前提:成功打开本地USB摄像头 // 创建VideoCapture对象 VideoCapture vc = new VideoCapture(); // 可以成功打开本地USB摄像头 // 参数可 ...
- 使用OpenCV进行网络摄像头的图像采集及视频存储
rtspURL格式 rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 1) username ...
- python之OpenCv(五)---抓取摄像头视频图像
OpenCV 可以通过 头videoCapture()方法打开摄像 摄像头变量 = cv2.VideoCapture(n) n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,... ...
- 利用opencv从USB摄像头获取图片
由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...
- Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比
打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...
- OpenCV 连接 Android IP摄像头
0.下载IP摄像头(android软件)并安装 比如这个(图标是一个灰色的摄像头的那个软件) 1.新建cpp文件,编译 #include "opencv2/opencv.hpp" ...
随机推荐
- drools研究后记
在实际工作中,有关于达标推断的业务逻辑 就是谁谁谁 消费满了多少钱.就返多少钱的优惠券 声明:不是drools不好,仅仅是在我遇到的场景下,不合适,不够好 在使用drools的时候发现有例如以下问题: ...
- Js参数值中含有单引号或双引号解决办法
<script type="text/javascript"> function Display(LoginEmail, UserName, ID) { ...
- 114自定义UITableViewCell(扩展知识:为UITableViewCell添加动画效果)
关键操作: 效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UITableViewCo ...
- 最新Java校招面试题及答案
本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 ...
- 【搞笑签名】390个qq个性昵称或签名,周末前娱乐一下
1 来瓶82年的矿泉水 2 名不正则言承旭 3 天涯何处无芳草,还是母乳喂养好 4 她的妈妈不爱我 5 你丫的 6 农夫三拳 7 猪嚼在恋√痛 8 马驴脸猛鹿 9 小白兔兽性大发 10 曰捣一乱 11 ...
- 使用T4模板调用Sqlserver链接生成自己的模板
<#@ template debug="false" hostspecific="false" language="C#" #> ...
- pyCharm运行python提示“please select a valid interpreter”
报错信息“please select a valid interpreter”提示“请选择一个有效的解释器” pyCharm是编写python语言的集成IDE工具,安装pyCharm后需要自行安装py ...
- android中sharedPreferences的用法(转)
SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...
- NetBpm 配置篇(2)
转载注明出处:http://www.cnblogs.com/anbylau2130/p/3877353.html 上一篇中介绍了Netbpm在IIS和CassiniWebServer服务器的安装 通过 ...
- iOS 关于信鸽推送点击推送通知的处理
最近的项目中使用了推送模块,使用的是企鹅帝国的信鸽推送服务,关于具体怎么推送的,证书如何设置,我不再赘述,一来开发文档中已经讲的非常清楚,二来在网上一搜的话也能搜到一大堆:在这里主要写下关于推送的通知 ...