批量将yolo-v3检测结果在原图上画矩形框显示

简介: 批量将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 = 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 = 1 
           continue
     elif   staff[0]== 'car'     :
             flag_people_or_car_data = 2 
             continue       
     else :
            if  flag_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)  #画框 并保存
            elif  flag_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 ,方便更新 不要用追加写

   for  image_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文件夹中出现了大量图片,及画上框得新图片。
在这里插入图片描述

完毕

相关文章
|
6月前
|
计算机视觉
YOLO 目标检测 识别框不显示文字标签(已解决)
YOLO 目标检测 识别框不显示文字标签(已解决)
|
机器学习/深度学习 传感器 算法
【交互式阈值二进制图像】采用彩色或单色图像通过交互/手动方式阈值单色图像或彩色图像的单个色带研究(Matlab代码实现)
【交互式阈值二进制图像】采用彩色或单色图像通过交互/手动方式阈值单色图像或彩色图像的单个色带研究(Matlab代码实现)
|
Linux
【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色
【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色
1052 0
|
4月前
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
6月前
|
计算机视觉 索引
【OpenCV】—ROI区域图像叠加&图像混合
【OpenCV】—ROI区域图像叠加&图像混合
|
6月前
|
传感器 人工智能 搜索推荐
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
102 0
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
|
6月前
|
算法 计算机视觉 异构计算
yolo如何画框、如何变换目标检测框的颜色和粗细、如何运行detect脚本
yolo如何画框、如何变换目标检测框的颜色和粗细、如何运行detect脚本
|
传感器
ENVI: 如何进行图像的自动配准?
ENVI: 如何进行图像的自动配准?
523 0
|
编解码
使用遮罩提取图像中感兴趣的区域
使用遮罩隔离感兴趣区域 (ROI) 来有效地处理被阻止的图像。 某些大图像源仅在图像的一小部分中具有有意义的数据。可以通过将处理限制为包含有意义数据的 ROI 来缩短总处理时间。使用掩码定义投资回报率。蒙版是一种逻辑图像,其中像素表示投资回报率。
127 1
|
数据可视化 算法 安全
自动检测图像中的圆形目标并可视化检测到的圆
说明如何自动检测图像中的圆或圆形目标并可视化检测到的圆。
178 0