一、利用OpenCv调用网络摄像头

核心:调取网络摄像头的核心是利用rtsp通道来获取网络摄像头的信息流。

(1)首先需要将电脑网络与摄像头网络处于同一个局域网或交换机下。

(2)查询摄像头的用户名(未作修改的话一般为admin)

(3)查询摄像头的IP和htps(这两个一般会写在摄像头上或说明书上)

(4)通道直接设为1就可以了(只有一个摄像头的情况,多个的话1~10多试试几个)

import cv2#需要自己填入几个值:用户名、IP、htps、通道(一般为1)
Capture = cv2.VideoCapture("rtsp:/用户名:@IP/htps/通道")
_, frame = Capture.read()
cv2.imshow(frame)

二、使用网络摄像头运行KCF追踪代码

直接上代码,如果上一步已经实现了的话,代码直接开用,只用修改以下上一步的几个地方就行了。追踪代码不是自己写的,是很久以前网上找的,找不到链接了,所以不标明出处了。

import cv2class MessageItem(object):# 用于封装信息的类,包含图片和其他信息def __init__(self, frame, message):self._frame = frameself._message = messagedef getFrame(self):# 图片信息return self._framedef getMessage(self):# 文字信息,json格式return self._messageclass Tracker(object):'''追踪者模块,用于追踪指定目标'''def __init__(self, tracker_type="BOOSTING", draw_coord=True):'''初始化追踪器种类'''# 获得opencv版本(major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')self.tracker_types = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']self.tracker_type = tracker_typeself.isWorking = Falseself.draw_coord = draw_coord# 构造追踪器if int(major_ver) < 3:self.tracker = cv2.Tracker_create(tracker_type)else:if tracker_type == 'BOOSTING':self.tracker = cv2.TrackerBoosting_create()if tracker_type == 'MIL':self.tracker = cv2.TrackerMIL_create()if tracker_type == 'KCF':self.tracker = cv2.TrackerKCF_create()if tracker_type == 'TLD':self.tracker = cv2.TrackerTLD_create()if tracker_type == 'MEDIANFLOW':self.tracker = cv2.TrackerMedianFlow_create()if tracker_type == 'GOTURN':self.tracker = cv2.TrackerGOTURN_create()def initWorking(self, frame, box):'''追踪器工作初始化frame:初始化追踪画面box:追踪的区域'''if not self.tracker:raise Exception("追踪器未初始化")status = self.tracker.init(frame, box)if not status:raise Exception("追踪器工作初始化失败")self.coord = boxself.isWorking = Truedef track(self, frame):'''开启追踪'''message = Noneif self.isWorking:status, self.coord = self.tracker.update(frame)if status:message = {"coord": [((int(self.coord[0]), int(self.coord[1])),(int(self.coord[0] + self.coord[2]), int(self.coord[1] + self.coord[3])))]}if self.draw_coord:p1 = (int(self.coord[0]), int(self.coord[1]))p2 = (int(self.coord[0] + self.coord[2]), int(self.coord[1] + self.coord[3]))cv2.rectangle(frame, p1, p2, (255, 0, 0), 2, 1)message['msg'] = "is tracking"return MessageItem(frame, message)if __name__ == '__main__':# 初始化视频捕获设备gVideoDevice = cv2.VideoCapture("rtsp://用户名:@IP/htps/1")gCapStatus, gFrame = gVideoDevice.read()# 选择 框选帧print("按 n 选择下一帧,按 y 选取当前帧")while True:if (gCapStatus == False):print("捕获帧失败")quit()_key = cv2.waitKey(0) & 0xFFif (_key == ord('n')):gCapStatus, gFrame = gVideoDevice.read()if (_key == ord('y')):breakcv2.imshow("pick frame", gFrame)# 框选感兴趣区域region of interestcv2.destroyWindow("pick frame")gROI = cv2.selectROI("ROI frame", gFrame, False)if (not gROI):print("空框选,退出")quit()# 初始化追踪器gTracker = Tracker(tracker_type="KCF")gTracker.initWorking(gFrame, gROI)# 循环帧读取,开始跟踪while True:gCapStatus, gFrame = gVideoDevice.read()if (gCapStatus):# 展示跟踪图片_item = gTracker.track(gFrame)cv2.imshow("track result", _item.getFrame())if _item.getMessage():# 打印跟踪数据print(_item.getMessage())else:# 丢失,重新用初始ROI初始print("丢失,重新使用初始ROI开始")gTracker = Tracker(tracker_type="KCF")gTracker.initWorking(gFrame, gROI)_key = cv2.waitKey(1) & 0xFFif (_key == ord('q')) | (_key == 27):breakif (_key == ord('r')):# 用户请求用初始ROIprint("用户请求用初始ROI")gTracker = Tracker(tracker_type="KCF")gTracker.initWorking(gFrame, gROI)else:print("捕获帧失败")quit()

​​​​​​​大功告成!编写不易,大家成功后点个关注or赞谢谢~~


Python调用安民威视、海康威视等网络摄像头方法(并实现KCF目标追踪和代码)相关推荐

  1. 在Ubuntu下使用opencv调用海康威视的网络摄像头

    经过很多天的配置,终于能在工程中调用海康威视的网络摄像头了,为了后人能快速上手,我整理内容如下: 在本文中我的电脑是使用的Ubuntu16.04 64位,使用工具是QT5.7.1,opencv2.4. ...

  2. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  3. 远程实时读取海康威视4G网络摄像头视频

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 远程实时读取海康威视4G网络摄像头视频 ==有用的废话== 背景 ==重点== 步骤 总结 有用的废话 购买海康威视4G网络摄像头时, ...

  4. 安装HikVision(海康威视)网络摄像头

    手边有四个基于海康威视摄像头在局域网连入局域网.使用浏览器访问.那么如何在局域网发现设备并正确配置它们相应的IP地址呢? 1.下载SADPTOOL 第一步在 HIKVISON 官网的'下载'部分下载S ...

  5. labview如何调用网络摄像头 labview 雄迈模组 需要通过labview调用在同一IP下的网络摄像头,采集图像,处理图像...

    在 LabVIEW 中使用网络摄像头需要使用 LabVIEW's IMAQdx 软件包,该软件包用于控制和采集图像.首先,你需要在计算机上安装 IMAQdx 驱动,然后才能在 LabVIEW 中使用网 ...

  6. Unity使用UMP插件实现接入海康网络摄像头方法

    一.下载UMP插件并且导入到Unity项目中 我这里下载了UMP插件,并且进行了处理,制作了对应播放本地文件夹和海康网络摄像头内容的Unity预设"RemoteVideoControl&qu ...

  7. python opencv录制视频_Python27+Opencv3 捕获网络摄像头IPCamera实时视频

    Opencv3+Python比较常见的是播放本地avi视频文件.或者捕获PC自带摄像头视频. 现在网络摄像机遍布,而我们测试时也需要用到网络摄像机的实时视频,并进行处理,参考<opencv3计算 ...

  8. python调用远程chromedriver.exe、selenium抓包方法

    本地python示例代码: from selenium import webdriver driver = webdriver.Remote(command_executor='http://192. ...

  9. python调用google translate API(谷歌翻译) 的使用方法-手动构造HTTP 请求模式

    这个页面中手动的填写请求参数之后,包括目标语言,源语言,输入的字符,目标格式等,可以得到翻译输出,如下图所示: 可以看到本质上是向服务器发起一个post请求,然后服务器在response中将翻译结果返 ...

最新文章

  1. Zend Studio添加ThinkPHP代码提示方法
  2. Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!
  3. Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照
  4. 小型数控雕刻机制作Arduino_开一家全屋定制装修公司,怎么选择开料机与雕刻机?...
  5. 建设可信赖、公平开放的HMS生态,华为与全球伙伴合作共赢
  6. python进度条代码怎么写_Python实现控制台中的进度条功能代码
  7. 从程序员到项目经理(16):原来一切问题都是可以解决的【转载】
  8. js弹窗 js弹出DIV,并使整个页面背景变暗
  9. 【ICnet2018】ICNet for Real-Time Semantic Segmentation on High-Resolution Images
  10. win7设置网络共享(ICS共享)
  11. Espresso测试框架
  12. 一个老程序员在情人节对中国软件业的致言!(转)
  13. 【动手学深度学习】李沐——循环神经网络
  14. 必收藏的实用网站(一)
  15. Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
  16. 咸鱼ESP32实例—RTC
  17. Java类型转换(自动类型转换+强制类型转换)
  18. 计算机专业推荐的一些超级好用的软件
  19. 【UV打印机】PrintExp打印软件教程(四)-设置校准电压
  20. 如何写接口,有什么规范?

热门文章

  1. Chapter4、色调映射的一般方法
  2. LCD VGH -VGL
  3. 中文分词jieba python 学习
  4. webcam实现拍照
  5. 51单片机应用篇-- --智能门锁
  6. 电脑族的饮食葵花宝典
  7. 计算机英语化工版,计算机英语(主编苏兵-化工版)教案:7 What is multimedia.doc...
  8. 销售经理应具备哪些技能
  9. oracle死锁进程杀不掉,oracle杀死死锁进程
  10. FusionCharts Demo