海康相机

优点:不用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()

  

最新文章

  1. 数量经济学推荐的Julia教程
  2. MLlib决策树与集成树
  3. Mac与iPhone屏幕录制
  4. error C3861: “LOG4CPLUS_DEBUG”: 找不到标识
  5. API文档管理工具-数据库表结构思考.
  6. setImageResource和setImageDrawable区别
  7. 使用sqoop工具从oracle导入数据
  8. EF 关系描述
  9. 数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份
  10. android: activity之间切换的抽屉效果
  11. 九度oj题目1207:质因数的个数
  12. 横向、纵向时间轴timeline系列
  13. Centos下快速安装Nginx
  14. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(1)- 概览
  15. 学号 20175201张驰 《Java程序设计》第8周学习总结
  16. matlab二维绘图学习摘要
  17. maven工程下添加oracle驱动包
  18. toString 和new String()区别
  19. 发布Docker 镜像到dockerhub
  20. shell test条件判断

热门文章

  1. 逆天的化妆CSS
  2. java 解决safari下载中文文件名乱码
  3. Intellij Idea 自动更新资源和类
  4. day05——字典
  5. rsync用法
  6. 【微信】微信小程序ISO上wx.scanCode BUG
  7. Reactor的NIO线程模型
  8. angular 监听离开页面执行相关操作
  9. ASP.NET Core使用Quartz定时调度
  10. 实验吧——看起来有点难(sql盲注)