当前位置: 首页 > news >正文

手机网站开发隐藏网址seo教程 百度网盘

手机网站开发隐藏网址,seo教程 百度网盘,重庆市建设工程施工安全信息网,外包公司做网站多少#1024程序员节 | 征文# 这两天才因为项目需要,对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案,就直接拿来做demo测试使用。 …

#1024程序员节 | 征文#

     这两天才因为项目需要,对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案,就直接拿来做demo测试使用。

 先说说onvif协议:

Onvif,即Open Network Video Interface Forum ,可以译为开放型网络视频接口论坛,是安迅士、博世、索尼在2008年共同成立的一个国际性、开发型网络视频产品标准网络接口的开发论坛,后来由于这个技术开发论坛共同制定的开发型行业标准,就用该论坛的大写字母命名,即ONVIF 网络视频标准规范,习惯简称为:ONVIF协议。

Onvif协议的出现,解决了不同厂商之间开发的各类失败不能融合使用的难题,提供了统一的网络视频开发标准,即最终能够通过Onvif这个标准化的平台实现不同产品之间的集成。

测试

onvif Device test tool工具测试

python实现步骤

  1. 安装必要的库

    • 使用 pip install onvif 安装 ONVIF 库。
    • 根据人形识别所用的库进行安装,比如使用 pip install volo(假设使用 volo 进行人形识别)。
  2. 初始化 ONVIF 摄像头

    • 设置摄像头的 IP 地址、端口、用户名和密码等参数。
    • 创建 ONVIFCamera 对象并更新其地址。
    • 获取 PTZ(Pan/Tilt/Zoom)服务,用于控制摄像头的云台和变焦。
  3. 实现摄像头变焦控制

    • 定义变焦速度等参数。
    • 通过调用 PTZ 服务的相关方法实现拉近(zoom in)、拉远(zoom out)和停止变焦操作。
  4. 人形识别与跟踪

    • 使用选定的人形识别库加载模型并进行图像分析。
    • 在视频流中检测人形,获取人形的位置信息。
    • 根据人形位置调整摄像头的云台和变焦,实现跟踪。

完整代码

import cv2
import numpy as np
import serial
from onvif import ONVIFCamera
import time
import asyncio
from zeep import Client
import tkinter as tk
from threading import Thread
import logginglogging.basicConfig(level=logging.DEBUG)# 摄像头配置常量
CAMERA_IP = "192.168.0.132"
CAMERA_PORT = 8080
CAMERA_USERNAME = "admin"
CAMERA_PASSWORD = "admin123"# 串口配置常量
SERIAL_PORT = 'COM4'
BAUDRATE = 115200# 初始化串口
ser = serial.Serial(SERIAL_PORT, BAUDRATE)# 初始化摄像头
camera = None
try:camera = ONVIFCamera(CAMERA_IP, CAMERA_PORT, CAMERA_USERNAME, CAMERA_PASSWORD)camera.update_xaddrs()except Exception as e:logging.error(f"初始化摄像机错误: {e}")
# 获取 PTZ 服务
def get_ptz_service(camera):try:if camera:return camera.create_ptz_service()else:print("摄像机未初始化.")return Noneexcept Exception as e:print(f"PTZ 服务初始化错误: {e}")return None
ptz_service = get_ptz_service(camera)
# ONVIF摄像头设置
def get_stream_url():if camera:media_service = camera.create_media_service()return media_service.GetStreamUri({'StreamSetup': {'Stream': 'RTP-Unicast','Transport': {'Protocol': 'RTSP'}},'ProfileToken': camera.media.GetProfiles()[0].token}).Urielse:return None
async def process_video_async(cap):while True:ret, frame = cap.read()if not ret:print("视频读取失败")breakresized_frame = cv2.resize(frame, (899, 600))cv2.imshow('Video', resized_frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakawait asyncio.sleep(0)def start_video_processing():stream_url = get_stream_url()if stream_url:cap = cv2.VideoCapture(stream_url)cap.set(cv2.CAP_PROP_FPS, 30)asyncio.run(process_video_async(cap))cap.release()else:print("无法获取视频流 URL。")
# 摄像头控制
class CameraControl:def __init__(self, ptz_service, camera):self.ptz_service = ptz_serviceself.zoom_speed = 0.1self.camera_profile_token = 'P2'def zoom_in(self):try:if self.camera_profile_token and 'P2':self.ptz_service.ContinuousMove({'ProfileToken': 'P2','Velocity': {'PanTilt': {'x': 0.0, 'y': 0.0},'Zoom': {'x': self.zoom_speed}}})print("拉近操作进行中")else:print("摄像头或 PTZ 服务未正确初始化。")except Exception as e:print(f"拉近操作失败:{e}")def zoom_out(self):try:if self.camera_profile_token and self.ptz_service:self.ptz_service.ContinuousMove({'ProfileToken': 'P2','Velocity': {'PanTilt': {'x': 0.0, 'y': 0.0},'Zoom': {'x': -self.zoom_speed} }})print("拉远操作进行中")else:print("摄像头或 PTZ 服务未正确初始化。")except Exception as e:print(f"拉远操作失败:{e}")def stop_zoom(self):try:if self.camera_profile_token and self.ptz_service:# 尝试不同的停止方法self.ptz_service.Stop({'ProfileToken': 'P2', 'PanTilt': True, 'Zoom': True})print("停止变焦操作")else:print("摄像头或 PTZ 服务未正确初始化。")except Exception as e:print(f"停止变焦失败:{e}")# 创建 GUI
class CameraApp:def __init__(self, master, camera_control):self.master = mastermaster.title("Camera Control")self.camera_control = camera_controlself.zoom_in_button = tk.Button(master, text="拉近", command=self.camera_control.zoom_in)self.zoom_in_button.pack()self.zoom_out_button = tk.Button(master, text="拉远", command=self.camera_control.zoom_out)self.zoom_out_button.pack()self.stop_button = tk.Button(master, text="停止变焦", command=self.camera_control.stop_zoom)self.stop_button.pack()self.quit_button = tk.Button(master, text="退出", command=self.quit)self.quit_button.pack()def quit(self):self.camera_control.stop_zoom()if ser.is_open:ser.close()self.master.quit()
if __name__ == "__main__":# 启动视频处理线程video_thread = Thread(target=start_video_processing)video_thread.start()# 创建摄像头控制实例if camera and ptz_service:camera_control = CameraControl(ptz_service, camera)else:print("无法创建摄像头控制实例,摄像头或 PTZ 服务未正确初始化。")# 启动 GUIroot = tk.Tk()if camera_control:app = CameraApp(root, camera_control)else:print("无法启动 GUI,摄像头控制实例未创建。")root.mainloop()

   

http://www.15wanjia.com/news/27559.html

相关文章:

  • 淘宝上做淘宝客的网站网络营销推广主要做什么?
  • 做网站还要数据库吗知识付费网站搭建
  • 常德做网站报价ping站长工具
  • 个人域名备案快的网站手机app推广平台
  • 如何做阿里巴巴免费网站友情链接的英文
  • 如何做一个企业网站郑州seo排名优化
  • 广州建设六马路小学网站app推广80元一单
  • 方案案例网站北大青鸟培训机构靠谱吗
  • 网站报价表对比表怎么做职业培训机构排名
  • 布吉做棋牌网站建设哪家便宜怎么制作seo搜索优化
  • 云计算网站建设太原网站排名推广
  • 桐庐建设局网站推广网站有哪些
  • wordpress转成中文版河南seo
  • 宁夏住房和城乡建设厅网站首页百度快照优化seo
  • 如何做网站服务器映射网络营销论文3000字
  • 我想做个卷帘门网站怎么做网络公关公司联系方式
  • 献县做网站的网络推广代理怎么做
  • 网站后台补丁如何做市场推广方法
  • 武隆集团网站建设网络营销推广的
  • 重庆网站建设培训实体店营销方案
  • 整站优化与关键词排名千锋教育和黑马哪个好
  • 荥阳网站开发新闻网最新消息
  • 顺义手机网站建设湖南企业竞价优化
  • 企查查官网查询win10优化工具
  • 大连开发网站建设百度店面定位怎么申请
  • wordpress主题 虎嗅新乡seo公司
  • 重庆专业网站建设人际网络营销2900
  • 深圳专业网站设计公司开封网站推广公司
  • 网站建设合同要上印花税吗dz论坛seo设置
  • 香港的网站打不开推广软件排行榜前十名