目标检测,yolov5

使用算法进行目标检测,本文是根据训练集进行推理,获取物体的尺寸

在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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值