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

专做智能化施工的网站机械工业第六设计研究院有限公司

专做智能化施工的网站,机械工业第六设计研究院有限公司,江西鄱阳专业做网站,成都网页设计培训学校哪家好高效率制作数据集【按这个流程走#xff0c;速度很顶】 本次制作#xff0c;1059张图片【马路上流动车辆】 几乎就是全自动了#xff0c;只要视频拍得好#xff0c;YOLO辅助制作数据集就效率极高 视频中的图片抽取#xff1a; 【由于视频内存过大#xff0c;遇到报错执行…高效率制作数据集【按这个流程走速度很顶】 本次制作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# count0while 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_ATTEMPTS4001989068 抽出来的图片接下来用YOLO的目标检测模型预测得到坐标文件 from ultralytics import YOLO# 读取模型这里传入训练好的模型 model YOLO(yolov8m.pt)# 模型预测saveTrue 的时候表示直接保存yolov8的预测结果 metrics model.predict(sourceF:\\testkk\\images\\GH040001,imgsz640,projectruns/detect,saveTrue)【预测结果已经还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, indent4)# 设置文件夹路径和输出文件夹路径 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.hkea.cn/news/14503636/

相关文章:

  • 松江做移动网站设计教育网站建设的素材
  • 网站单页在线制作2个wordpress
  • 自己做的网站提示不安全吗WordPress开启局域网
  • 本地建站教程更改wordpress主题名称
  • 做外单网站有哪些内容淘宝关键词搜索工具
  • 上海网站建设收费标准商标注册网上查询
  • 河南seo网站策划黄埔做网站的公
  • 网站建设ppt下载html编辑器的使用方法
  • 做视频卖给视频网站天元建设集团有限公司在哪个区
  • 无锡住房和城乡建设部网站成都旅游景点有哪些
  • 百度站长提交网址夹江网站建设
  • 做教育app的网站有哪些内容杭州网站界面设计
  • 成都市公园城市建设局网站广州五屏网站建设
  • 绿色能源网站模板毕节市建设厅网站
  • 网站权重怎么做wordpress搬家换域名不换服务器
  • 网站建设优惠php网站开发案例教程 dvd
  • 上海专业网站建设服网站开发项目策划
  • 免费建立英文网站wordpress获取用户角色
  • 网站建设功能需求表微企点做网站视频
  • 外部门户网站首页网站备案和备案的区别吗
  • 音乐网站页面设计网站建设毕业设计综述
  • 东莞整合网站建设开发贵阳网站建设制作
  • wordpress中文下载站商城网站开发那家好
  • 前端网站开发培训重庆网站排名公司
  • 网剧推广一次5元长沙百度seo
  • 旅游网站建设的方向做专利网站的重要点
  • 网页制作模板的网站网站的关键词在哪设置
  • 做视频网站流量费高吗疏肝益阳胶囊有哪些功效与作用
  • 贵阳哪家网站做优化排名最好wordpress获取动态页面
  • 网站中备案与不备案的区别陕西网站建设优化建站