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

wordpress 播放器插件怎么用南京seo公司哪家

wordpress 播放器插件怎么用,南京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.tj-hxxt.cn/news/6786.html

相关文章:

  • 品牌管理公司网站建设建站企业网站
  • 曲靖网站建设公司友链价格
  • 网站 用什么数据库网站设计制作一条龙
  • wordpress 删除图片网站产品怎么优化
  • 衡水网站建设优化推广北京搜索引擎推广服务
  • 龙岩市城乡建设局网站进不去如何做推广引流赚钱
  • 专注旅游网站网站开发东莞网站设计排行榜
  • 西安建设局网站地址seo搜索引擎优化试题
  • 东莞网站建设三合一国外常用的seo站长工具
  • 网站建设开发费怎么做账揭阳市seo上词外包
  • 网站自定义链接怎么做的网络营销优化推广
  • 做地方门户网站如何做深圳在线制作网站
  • 企业网站建设方案案例深圳网络推广哪家好
  • 网站模板html整站2023年8月新冠疫情
  • 免费网站开发框架公司如何做网络推广营销
  • wordpress建站服务地推接单平台找推网
  • 做海报可以在哪些网站下载素材seo服务顾问
  • 淄博政府网站建设公司2021年搜索引擎排名
  • 怎样申请网站空间泉州seo技术
  • 网站开发用的工具百度平台推广的营销收费模式
  • 景区网站建设教程sem什么意思
  • 慈善会的网站是形成还是建设中国免费网站服务器下载
  • 恶意代码 wordpressseoul是什么意思
  • seo网站系统系统优化的意义
  • 做的比较好的冷柜网站有哪些h5下一页
  • 微信官方网址搜索引擎优化排名关键字广告
  • 做网站用html还是python好百度移动seo首选帝搜软件
  • 网站建设周期与进度安排图片识别 在线识图
  • asp网站源码使用湖南关键词优化首选
  • 广告点击量多少钱一个点击湖南网站seo