opencv获取网络相机的图像-不用sdk
海康相机
优点:不用sdk直接网络获取
缺点:速度有1-2秒的延迟
使用型号
1280*680分辨路
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
//1.从摄像头读入视频
//VideoCapture cap(0); VideoCapture cap("rtsp://admin:fhy145145@192.168.1.62/Streaming/Channels/2"); //1 主码流 1 1280*680 2 次码流620*480
if (!cap.isOpened())
{
return 0;
} Mat cam;
cap >> cam;//获取当前帧图像
cout << "Im.rows = " << cam.rows << endl;
cout << "Im.cols = " << cam.cols << endl; //cout << "视频宽度=" << width << endl;
//cout << "视频高度=" << height << endl; //2.循环显示每一帧
while (1)
{ cap >> cam;//获取当前帧图像
if (!cam.empty())//如果某帧为空则退出循环
{
namedWindow("相机", 0);
imshow("相机", cam);//显示当前帧图像 waitKey(30);//延时30秒
}
}
return 0;
}
注: admin和12345分别是ip camera的用户名和密码,在浏览器上第一次登录摄像头的时候会进行设置;
192.168.1.64是摄像头的默认IP,在浏览器中输入即可进入登录页面(如下);
Channels/1和Channels/2分别对应主码流和子码流地址,两者的分辨率不同。IP摄像头无法通过opencv调节分辨率,只能在海康的监控界面的配置进行设置(如下)。
3. 摄像头校准(calibration)(optional)
这个配置有很多,而且官方提供的校准文档很详细(戳这里),就不具体细讲了。需要python版本的代码的话可以直接fork这里;如果是c++版本的话可以参考这里
python
相机
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import cv2
import os
font = cv2.FONT_HERSHEY_SIMPLEX
#url='rtsp://admin:fhy145145@192.168.1.62/Streaming/Channels/1' #海康
url = 'http://192.168.1.89/webcapture.jpg?command=snap&channel=1' #雄迈
#url='rtsp://192.168.1.89:554/user=admin&password=&channel=1&stream=0.sdp?'
cam = cv2.VideoCapture(url)
cam.set(3, 640) # set video width
cam.set(4, 480) # set video height
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# For each person, enter one numeric face id
face_id = input('\n 请输入用户数字编号(只能是数字): ')
print("\n [INFO] Initializing face capture. Look the camera and wait ...")
# Initialize individual sampling face countdsa
count = 0
while(True):
ret, img = cam.read()
cv2.putText(img, str(count), (5,80), font, 1, (255,255,255), 2)
# cv2.putText(img, str("change face!"), (5,40), font, 1, (255,255,255), 2) # img = cv2.flip(img, -1) # flip video image vertically
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2) #
cv2.putText(img, str("Perss s to save face!"), (5,40), font, 1, (255,255,255), 2)
# cv2.imshow('image', img)
k = cv2.waitKey(10) & 0xff # Press 'ESC' for exiting video
if k == ord('s'):
count += 1
cv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) + ".jpg", gray[y:y+h,x:x+w])
break
elif k == 27:
break
cv2.imshow('image', img)
k = cv2.waitKey(10) & 0xff # Press 'ESC' for exiting video
if k == 27:
break
elif count >= 30: # Take 30 face sample and stop video
break # Do a bit of cleanup
print("\n [INFO] Exiting Program and cleanup stuff")
cam.release()
cv2.destroyAllWindows()
opencv获取网络相机的图像-不用sdk的更多相关文章
- Swift实战-豆瓣电台(三)获取网络数据
		
观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...
 - iOS获取网络时间与转换格式
		
[NSDate date]可以获取系统时间,但是会造成一个问题,用户可以自己修改手机系统时间,所以有时候需要用网络时间而不用系统时间.获取网络标准时间的方法: 1.先在需要的地方实现下面的代码,创 ...
 - Windows Phone 同步方式获取网络类型
		
原文:Windows Phone 同步方式获取网络类型 在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API ...
 - Android中获取网络数据时的分页加载
		
//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载, 蓝色部分是睡眠时间,自我感觉不用写 ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...
 - [置顶] 获取网络数据中的数组显示成ListView的简单流程
		
首先说一下 这是我自己的个人笔记,如果想看看,不用看细节,可以看流程. 定义一个线程池 ExecutorService pool = Executors.newFixedThreadPool(15) ...
 - OpenCV获取IP摄像头视频
		
从开源中国博客搬来,合并博客 实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频.这里先用安卓手机代替一下进行试验.大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域 ...
 - iOS获取网络类型的四种方法
		
Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有 ...
 - iOS获取相册/相机图片-------自定义获取图片小控件
		
一.功能简介 1.封装了一个按钮,点击按钮,会提示从何处获取图片:如果设备支持相机,可以从相机获取,同时还可以从手机相册获取图片. 2.选择图片后,有一个block回调,根据需求,将获得的图片拿来使用 ...
 - Python 图像处理 OpenCV (4):图像算数运算以及修改颜色空间
		
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...
 
随机推荐
- Visual Studio 2019 for Mac 离线更新方法
			
当你打开Visual Studio 2019 for Mac检查更新时,如果下载更新包很慢,可以尝试如下操作: 打开Finder(访达),找到~/Library/Caches/VisualStudio ...
 - 解决WebBrowser控件会导致应用程序占用内存居高不下问题
			
WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增.WebBrowser 类使用户可以在窗体中导航网页,下面我们来看在开发中碰到WebBrowser控件 ...
 - 利用Jenkins打包并远程部署NodeJS应用
			
本文Jenkins版本2.190.2,为19年11月最新 1.安装Jenkins.Git和NodeJS Jenkins安装参考:https://www.cnblogs.com/zhi-leaf/p/1 ...
 - 获取 Rancher 中 Prometheus 的数据
			
1.需求 在 rancher 应用商店添加集群监控,会安装 prometheus.grafana:需要从 prometheus 的 api 中收集 pod 的一些信息. 查看grafana 配置的数据 ...
 - c++小学期大作业攻略(三)用户系统
			
Update at 2019/07/22 14:16 发现一个大坑,我们后期是打算用QSS统一堆样式进行美化的,于是我把之前对QLabel进行的setAlignment全部去掉了,打算统一丢进Qss里 ...
 - c++小学期大作业攻略(零)建议+代码结构(持续更新)
			
当前已经做好的exe,数据库是连服务器的,但是头像是存在本地的文件系统里面: https://cloud.tsinghua.edu.cn/d/059ef6b1f9a149ce879b/files/?p ...
 - Django-orm高级
			
ORM字段 orm常见字段 https://www.cnblogs.com/liuqingzheng/articles/9627915.html choice字段注释与数据渲染 性别 sex_choi ...
 - python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict
			
本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...
 - 2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失
			
原文:2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失 title author date CreateTime categories win7 无法 ...
 - html提示信息框淡入淡出效果(自己的思路,如果有更好的思路,请留言)
			
使用方法: 调用initMessagebox(“要显示的文字”)方法即可 <!--信息框--> <div id="messagebox"></div& ...