赞
踩
使用算法进行目标检测,本文是根据训练集进行推理,获取物体的尺寸
在yolov5的代码上,进行二次开发,获取物体在图片上的像素宽度与物体实际宽度做成比例,获取其他物体的实际尺寸,测试的时候用来几个摄像头,有畸形,误差也很小,主要取决于训练集是否够详细,测试用了400张图片进行测试,误差在厘米以内,要是用网络摄像头可以用代码将网络摄像头的视频流导出图片,进行标注,训练,这样分辨率才能识别
将摄像头视频流变成图片代码(获取萤石云上的设备)
-
-
-
-
-
- import hashlib
- import hmac
- import base64
- import random
-
- import requests
- import cv2
-
- # 设置萤石云的相关参数
- # 设置萤石云的相关参数
-
- app_key = 'xxx'
- app_secret = 'xxx'
- CAMERA_SERIAL = 'E92940560'
- CHANNEL_NO = '1'
- EXPIRE_TIME = '300000' # 监控地址有效期,单位为秒
-
- def _generate_sign(method, url, params, secret):
- sorted_params = sorted(params.items(), key=lambda x: x[0])
- raw_data = method.upper() + url + '?' + '&'.join([f"{k}={v}" for k, v in sorted_params])
- sign = hmac.new(secret.encode('utf-8'), raw_data.encode('utf-8'), hashlib.sha1).digest()
- sign = base64.b64encode(sign).decode('utf-8')
- return sign
-
- # 构造请求 URL,获取accessToken
- url = 'https://open.ys7.com/api/lapp/token/get'
-
- # 构造请求 URL,获取监控地址
- adressurl = 'https://open.ys7.com/api/lapp/v2/live/address/get'
- params = {
- 'appKey': app_key,
- 'appSecret': app_secret
- }
-
-
- def run():
- body = requests.post(url, params=params)
- if body:
- result = body.json()
- if result.get('code') == '200':
- print("获取token")
- data=result.get("data")
- accessToken =data.get('accessToken')
- adderssParams = {
- "accessToken": accessToken,
- "deviceSerial": CAMERA_SERIAL,
- "protocol":2,
- "expireTime":1000000,
- "type":1,
- "quality":1
- }
- addressBody = requests.post(adressurl, params=adderssParams)
- if addressBody:
- addressData = addressBody.json()
- if addressData.get("code") == '200':
- address = addressData.get("data").get("url")
- print("地址==="+address)
- # 查看视频
- cap = cv2.VideoCapture(address)
- while True:
- ret, frame = cap.read()
- if ret:
- cv2.imshow('video', frame)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- # 设置保存图片的路径和名称
- num=random.randint(1, 100)
- save_path = f'frame_{num}.jpg'
-
- # 保存当前帧为图片
- cv2.imwrite(save_path, frame)
- cap.release()
- cv2.destroyAllWindows()
- else:
- print("获取监控地址失败:" + addressData.get("msg"))
- else:
- print("获取token失败" + result)
-
-
- if __name__ == '__main__':
- run()
-
-
-
-
-
将文件打包成exe操作:
下载auto-py-to-exe,它是 pyinstaller
的 GUI
版本,在当前环境下载
pip install auto-py-to-exe
执行:在终端执行
auto-py-to-exe
引用的视频地址:图形化工具打包yolov5,生成可执行文件exe_哔哩哔哩_bilibili
引用:图像化工具打包yolov5,生成可执行文件exe - 迷途小书童的Note迷途小书童的Note (xugaoxiang.com)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。