yolov7裁剪出识别结果
开头先附上两篇有关yolov7的使用教程
①yolov7保姆级教程:链接
②yolov7数据增强与数据划分:链接
本篇主要内容为:在识别出来目标照片后,对目标进行裁剪
1.准备照片与标签
标签的生成在执行代码中加入–save-txt,完整命令如下:
python detect.py --weights .\runs\train\yolov72\weights\best.pt --source .\datasets\findcontact\testImages\ --save-txt
上面的文件路径根据实际情况修改即可
执行后,会生成一个labels文件,里面是yolo格式的标签,将labels与图片放到同一个文件夹
2.代码
代码部分是转载。
根据实际情况,修改文件路径即可。w、h的值,根据需要可自行调整。
# -*- coding: utf-8 -*-
# @Author : 大叔azhe
# @Time : 2022/9/12 20:00
# @Function:图片裁剪
import os
import cv2
import shutil
def caijian():
# 仅支持JPEG,PNG,JPG格式图片
path = "D:/jmcode/2/yolov7-main/runs/detect/exp5/labels" # jpg图片和对应的生成结果的txt标注文件,放在一起
path3 = "D:/jmcode/2/yolov7-main/runs/detect/exp5/cut/roi" # 裁剪出来的小图保存的根目录
path6 = "D:/jmcode/2/yolov7-main/runs/detect/exp5/cut" # 裁剪出来的小图保存的根目录
w = 4000 # 原始图片resize
h = 4000
img_total = []
txt_total = []
file = os.listdir(path)
for filename in file:
first, last = os.path.splitext(filename)
# if (last in [".jpg",".jpeg","png"] ): # 图片的后缀名
# img_total.append(first)
# # print(img_total)
# else:
# txt_total.append(first)
if (last in [".txt"]): # 图片的后缀名
txt_total.append(first)
# print(img_total)
else:
img_total.append(first)
if os.path.exists(path3):
shutil.rmtree(path3)
os.mkdir(path3)
else:
os.mkdir(path3)
for img_ in img_total:
if img_ in txt_total:
filename_img = img_ ".jpg" # 图片的后缀名
# print('filename_img:', filename_img)
path1 = os.path.join(path, filename_img)
a = os.path.exists(path1)
if (a == False):
filename_img = img_ ".jpeg" # 图片的后缀名
# print('filename_img:', filename_img)
path1 = os.path.join(path, filename_img)
a = os.path.exists(path1)
if (a == False):
filename_img = img_ ".png" # 图片的后缀名
# print('filename_img:', filename_img)
path1 = os.path.join(path, filename_img)
a = os.path.exists(path1)
print("文件是否存在{}".format(a))
img = cv2.imread(path1)
img = cv2.resize(img, (w, h), interpolation=cv2.INTER_CUBIC) # resize 图像大小,否则提取先验框时因原图差异区域可能会报错
filename_txt = img_ ".txt"
# print('filename_txt:', filename_txt)
n = 1
with open(os.path.join(path, filename_txt), "r ", encoding="utf-8", errors="ignore") as f:
for line in f:
aa = line.split(" ")
x_center = w * float(aa[1]) # aa[1]左上点的x坐标
y_center = h * float(aa[2]) # aa[2]左上点的y坐标
width = int(w * float(aa[3])) # aa[3]图片width
height = int(h * float(aa[4])) # aa[4]图片height
lefttopx = int(x_center - width / 2.0)
lefttopy = int(y_center - height / 2.0)
roi = img[lefttopy 1:lefttopy height 3,
lefttopx 1:lefttopx width 1] # [左上y:右下y,左上x:右下x] (y1:y2,x1:x2)需要调参,否则裁剪出来的小图可能不太好
print('roi:', roi)
filename_last = img_ "_" str(n) ".jpg" # 裁剪出来的小图文件名
# print(filename_last)
path2 = os.path.join(path6, "roi") # 需要在path3路径下创建一个roi文件夹
print('path2:', path2) # 裁剪小图的保存位置
cv2.imwrite(os.path.join(path2, filename_last), roi)
n = n 1
else:
continue
if __name__ == '__main__':
caijian()
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiagkge
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22