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

给公司做企业网站职业培训机构有哪些

给公司做企业网站,职业培训机构有哪些,做淘宝banner的网站,网站建设最好的书籍是高效率制作数据集【按这个流程走,速度很顶】 本次制作,1059张图片【马路上流动车辆】 几乎就是全自动了,只要视频拍得好,YOLO辅助制作数据集就效率极高 视频中的图片抽取: 【由于视频内存过大,遇到报错执行…

高效率制作数据集【按这个流程走,速度很顶】

本次制作,1059张图片【马路上流动车辆】在这里插入图片描述
几乎就是全自动了,只要视频拍得好,YOLO辅助制作数据集就效率极高

视频中的图片抽取:
【由于视频内存过大,遇到报错执行失败,解决方法已附加在代码下面】

import cv2
import os
import pdb
import numpy as np
#from glob2 import globvideos_src_path = 'F:\\testkk\\vivivi\\'  # 提取图片的视频文件夹# 筛选文件夹下MP4格式的文件
# videos = os.listdir(videos_src_path)  # 用于返回指定的文件夹包含的文件或文件夹的名字的列表。
# videos = filter(lambda x: x.endswith('mp4'), videos)
dirs = os.listdir(videos_src_path)  # 获取指定路径下的文件
count = 0
# 写入txt
f = "F:\\testkk\\images\\data.txt"
with open(f, "w+") as file:file.write("-----start-----\n")# 循环读取路径下的文件并操作
for video_name in dirs:outputPath = "F:\\testkk\\images\\"+video_name[:-4] + "\\"# os.mkdir(outputPath)print("start\n")print(videos_src_path + video_name)vc = cv2.VideoCapture(videos_src_path + video_name)# 初始化,并读取第一帧# rval表示是否成功获取帧# frame是捕获到的图像rval, frame = vc.read()# 获取视频fpsfps = vc.get(cv2.CAP_PROP_FPS)# 获取每个视频帧数frame_all = vc.get(cv2.CAP_PROP_FRAME_COUNT)print("[INFO] 视频FPS: {}".format(fps))print("[INFO] 视频总帧数: {}".format(frame_all))# 每隔n帧保存一张图片frame_interval = 30# 统计当前帧frame_count = 1# count=0while rval:rval, frame = vc.read()# 隔n帧保存一张图片if frame_count % frame_interval == 0:# 当前帧不为None,能读取到图片时if frame is not None:filename = outputPath + "Kidney_tumors_{}.jpg".format(count)# 水平、垂直翻转frame = cv2.flip(frame, 0)frame = cv2.flip(frame, 1)# 旋转180°frame = np.rot90(frame)frame = np.rot90(frame)cv2.imwrite(filename, frame)count += 1print("保存图片:{}".format(filename))frame_count += 1# 将成功抽帧的视频名称写入txt文件,方便检查file = open(f, "a")file.write(video_name + "\n")# 关闭视频文件vc.release()print("[INFO] 总共保存:{}张图片\n".format(count))

遇到问题:
global cap_ffmpeg_impl.hpp:1541 grabFrame packet read max attempts exceeded, if your video have multiple streams (video, audio) try to increase attempt limit by setting environment variable OPENCV_FFMPEG_READ_ATTEMPTS (current value is 4096)
解决方法:
Windows:给OPENCV_FFMPEG_READ_ATTEMPTS 设置一个和视频大小一样的value值,然后重启电脑,再来执行,就解决了。在这里插入图片描述
Linux:终端执行
$ export OPENCV_FFMPEG_READ_ATTEMPTS=4001989068

抽出来的图片,接下来用YOLO的目标检测模型预测,得到坐标文件

from ultralytics import YOLO# 读取模型,这里传入训练好的模型
model = YOLO('yolov8m.pt')# 模型预测,save=True 的时候表示直接保存yolov8的预测结果
metrics = model.predict(source='F:\\testkk\\images\\GH040001',imgsz=640,project='runs/detect',save=True)

在这里插入图片描述
【预测结果已经还OK了,几乎不用咋修改标注文件了】

然后:【txt转json】

import os
import json
import base64
import cv2def read_txt_file(txt_file):with open(txt_file, 'r') as f:lines = f.readlines()data = []for line in lines:line = line.strip().split()class_name = line[0]bbox = [coord for coord in line[1:]]data.append({'class_name': class_name, 'bbox': bbox})return datadef convert_to_labelme(data, image_path, image_size):labelme_data = {'version': '4.5.6','flags': {},'shapes': [],'imagePath': json_image_path,'imageData': None,'imageHeight': image_size[0],'imageWidth': image_size[1]}for obj in data:dx = obj['bbox'][0]dy = obj['bbox'][1]dw = obj['bbox'][2]dh = obj['bbox'][3]w = eval(dw) * image_size[1]h = eval(dh) * image_size[0]center_x = eval(dx) * image_size[1]center_y = eval(dy) * image_size[0]x1 = center_x - w/2y1 = center_y - h/2x2 = center_x + w/2y2 = center_y + h/2# x1 = eval(obj['bbox'][0]) * image_size[1]# y1 = eval(obj['bbox'][1]) * image_size[0]# x2 = eval(obj['bbox'][2]) * image_size[1]# y2 = eval(obj['bbox'][3]) * image_size[0]if obj['class_name'] == '0': #判断对应的标签名称,写入json文件中label = str('person')elif obj['class_name'] == '2':label = str('car')else:continueshape_data = {'label': label,'points': [[x1, y1], [x2, y2]],'group_id': None,'shape_type': 'rectangle','flags': {}}labelme_data['shapes'].append(shape_data)return labelme_datadef save_labelme_json(labelme_data, image_path, output_file):with open(image_path, 'rb') as f:image_data = f.read()labelme_data['imageData'] = base64.b64encode(image_data).decode('utf-8')with open(output_file, 'w') as f:json.dump(labelme_data, f, indent=4)# 设置文件夹路径和输出文件夹路径
txt_folder = "D:\\yoloProject\\ultralytics-registry\\runs\\detect\\predict5\\labels"  # 存放LabelImg标注的txt文件的文件夹路径
output_folder = "F:\\testkk\\images\\GH040001_json"  # 输出LabelMe标注的json文件的文件夹路径
img_folder = "F:\\testkk\\images\\GH040001" #存放对应标签的图片文件夹路径# 创建输出文件夹
if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历txt文件夹中的所有文件
for filename in os.listdir(txt_folder):if filename.endswith('.txt'):# 生成对应的输出文件名output_filename = os.path.splitext(filename)[0] + '.json'# 读取txt文件txt_file = os.path.join(txt_folder, filename)data = read_txt_file(txt_file)# 设置图片路径和尺寸image_filename = os.path.splitext(filename)[0] + '.jpg'  # 图片文件名与txt文件名相同,后缀为.jpgimage_path = os.path.join(img_folder, image_filename)# image_size = (1280, 720)  # 根据实际情况修改json_image_path = image_path.split('\\')[-1]image_size = cv2.imread(image_path).shape# 转化为LabelMe格式labelme_data = convert_to_labelme(data, image_path, image_size)# 保存为LabelMe JSON文件output_file = os.path.join(output_folder, output_filename)save_labelme_json(labelme_data, image_path, output_file)

在这里插入图片描述

最后:修改OK后,再把JSON转TXT,作为样本数据集:
https://blog.csdn.net/weixin_43624549/article/details/139532142

http://www.yidumall.com/news/43675.html

相关文章:

  • 网站详情页用哪个软件做app网站推广平台
  • 专业制作网站费用网络销售平台有哪些
  • 村委会网站源码佛山网站建设维护
  • 做非洲出口的网站营销型企业网站
  • 白沟17网站一起做网店友情链接购买
  • 做公司网站需要几个域名百度seo引流怎么做
  • 好看的html页面模板泰州seo平台
  • 武汉做商城网站建设百度云登陆首页
  • 自己做的网站谁来维护百度学术官网入口
  • 如何进行营销型企业网站的优化关键词歌曲免费听
  • 深圳市住建设局网站优化方案官方网站
  • 邯郸景区网站制作苏州seo关键词优化排名
  • 网站部署到终端机怎么做seo网络优化是什么工作
  • 几级英语可以做外贸网站seo网站降权查询工具
  • 浅谈中兴电子商务网站建设郑州seo服务技术
  • 佛山网站到首页排名百度推广登录平台登录
  • 做学术用的网站双滦区seo整站排名
  • 电子商务型网站建设seo百科大全
  • bluehost网站后台百度seo排名优化公司哪家强
  • 中国电信新建网站备案管理系统 录完信息网络营销企业有哪些
  • vbs做网站免费网站友情链接
  • 怎么建设时时彩网站大连网络营销seo
  • web制作网页个人简历广州百度seo排名优化
  • 电子商务网站建设与设计推广app拿返佣的平台
  • 制作网站建设的关键词seo优化公司
  • 响应式企业网站设计百度百家官网入口
  • 网站无法打开的原因哈尔滨网站建设
  • 活动策划网站自动推广工具
  • 网站对不同分辨率软文营销的作用
  • 宝安哪有网站建设视频号怎么付费推广