批量将yolo-v3检测结果在原图上画矩形框显示
批量将yolo-v3检测结果在原图上画矩形框显示 在通过yolo-v3训练自己模型
操作参考:训练模型
并得到测试结果将测试结果转化为一张图片对应一个txt检测结果的形式后
操作参考:测试并转化测试结果
如果想要直观得查看检测结果需要将检测结果得矩形框叠加到原图上并保存,下面给出操作方法。
1、建立相关目录及文件 新建一个文件夹,命名:Draw_frame_in_picture。
在里面建立三个文件夹:
1、test_results:来存放模型检测结果得txt文件
2、save_image:用来存放画上矩形框后得图片
3、raw_images:用来存放检测得原始图片
在里面建立 text_image_name_list.txt 文件 :文件中会通过代码写入检测图片得名称(不带后缀)
在里面建立 Draw_frame_in_picture.py 文件:在里面编辑批量画框操作得代码
文章图片
2、导入相关文件 将原始检测图片复制到raw_images文件夹中
文章图片
将检测结果复制到test_results文件夹中
文章图片
此部分一定要图片与检测结果一一对应。
3、编辑代码 直接粘贴如下代码即可
注意配置开头部分四个路径
#coding:utf-8
import cv2
import os#全局变量进行路径配置
text_results_folder ='/home/tukrin/zhl/Draw_frame_in_picture/test_results/'#检测结果存放文件夹test_results路径raw_images_folder = '/home/tukrin/zhl/Draw_frame_in_picture/raw_images/'#检查图片存放文件夹raw_images路径save_images_folder = '/home/tukrin/zhl/Draw_frame_in_picture/save_image/'#保存图片文件夹save_image路径text_image_name_list_file_path = '/home/tukrin/zhl/Draw_frame_in_picture/text_image_name_list.txt'#里面有检测图片名称得txt文件路径#函数:在一幅图片对应位置上加上矩形框image_name 图片名称不含后缀
def draw_a_tangle_in_one_image(image_name,text_results_folder,raw_images_folder,save_images_folder ):
txt_path= os.path.join(text_results_folder,'%s.txt'%(image_name))#本次检测结果txt路径
image_path = os.path.join( raw_images_folder,'%s.jpg'%(image_name))#本次原始图片jpg路径save_file_path = os.path.join(save_images_folder,'%s.jpg'%(image_name)) #本次保存图片jpg路径
flag_people_or_car_data = https://www.it610.com/article/0#变量 代表类别
source_file = open(txt_path)
image = cv2.imread(image_path)for line in source_file: #例遍 txt文件得每一行
staff = line.split() #对每行内容 通过以空格为分隔符对字符串进行切片
if staff[0]=='people' :
flag_people_or_car_data = https://www.it610.com/article/1
continue
elifstaff[0]=='car':
flag_people_or_car_data = https://www.it610.com/article/2
continue
else :
ifflag_people_or_car_data == 1:
draw_people_tangle = cv2.rectangle(image,(int(staff[0]), int(staff[1])),(int(staff[2]),int(staff[3])),(0,255,0),1)# 画框操作人画 绿框宽度为1
cv2.imwrite(save_file_path,draw_people_tangle)#画框 并保存
elifflag_people_or_car_data == 2:
draw_car_tangle = cv2.rectangle(image,(int(staff[0]), int(staff[1])),(int(staff[2]),int(staff[3])),(0,0,255),1)# 画框操作车画 蓝框宽度为1
cv2.imwrite(save_file_path,draw_car_tangle)#画框 并保存#函数:通过保存有原始图片得文件夹,生成写有所有检测图片名称(不带后缀)得txt
def make_imageName_file_list_txt(raw_images_folder, text_image_name_list_file_path):image_file_list = os.listdir(raw_images_folder) #得到该路径下所有文件名称带后缀text_image_name_list_file=open(text_image_name_list_file_path,'w')#以写入得方式打开txt ,方便更新 不要用追加写forimage_file_name in image_file_list:#例遍写入
image_name,file_extend = os.path.splitext(image_file_name)# 去掉扩展命
text_image_name_list_file.write(image_name+'\n') #写入
text_image_name_list_file.close()if __name__ == '__main__':# 只有在文件作为脚本文件直接执行时才执行下面代码make_imageName_file_list_txt(raw_images_folder, text_image_name_list_file_path) #执行写入txt函数image_names = open(text_image_name_list_file_path).read().strip().split() #得到图片名字不带后缀for image_name in image_names: #例遍图片名称
draw_a_tangle_in_one_image(image_name,text_results_folder,raw_images_folder,save_images_folder)#对图片画框
4、执行脚本 在对应路径下执行
python Draw_frame_in_picture.py
5、查看检测结果 在save_image文件夹中出现了大量图片,及画上框得新图片。
文章图片
【批量将yolo-v3检测结果在原图上画矩形框显示】完毕
推荐阅读
- 即将到手三百万
- 思友人
- 20210307《挑战赛怂人胆》【能量将帅挑战赛(01)】
- 苍灵十二将I|苍灵十二将I 第一百二十五章 关门猎兽
- 那条灰色的人行道
- 《没有你我将会很幸福》
- 《将来的你,一定会感谢现在战胜烦恼的自己-------第四章/第十一节/用逆向思维解除烦恼》
- 牧人将归
- 首届中国苏州江南文化艺术国际旅游节将于8月24日启幕
- 陆军中将谭自平