栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

os、opencv的一些基本函数使用----在图片上绘制框线

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

os、opencv的一些基本函数使用----在图片上绘制框线

文章目录
  • 前言
  • 一、需要用到的扩展包?
    • 1.import os
    • 2.import cv2 as cv
    • 3.from PIL import Image/import matplotlib.pyplot as plt
  • 二、实现思路
    • 1.将需要用到的路径保存到变量中待用
    • 2.读入图片、跟踪结果数据
    • 3.解包lines
    • 4.画框、将图片存至指定路径
  • 总结


前言

本文记录了在OTB100进行测试并获取到跟踪结果的文本文件后,使用python脚本在相应的视频进行画框处理的代码解释。


一、需要用到的扩展包? 1.import os

在python环境下对文件,文件夹执行操作的一个模块。

  • 读取path路径下的所有文件夹名字,每个文件夹对应一个视频名字。
list = os.listdir(path) 
  • 遍历指定路径下所有文件
fns = [os.path.join(root, fn) for root, dirs, files in os.walk(path + '/' + listname + '/img') for fn in files]
  • 判断文件夹是否存在,存在返回True,不存在返回False
isExists = os.path.exists(save_path+'/'+listname)
  • 不存在文件夹时,执行创建文件夹的操作
os.mkdir(save_path+'/'+listname)
2.import cv2 as cv

import cv2表示导入opencv的包,当然前提是安装好opencv,导入成功后,就可以利用cv2实现很多功能,比如说使用函数cv2.imread(filepath,flags)读入一副图片、使用函数cv2.imshow(wname,img)显示图像、使用函数cv2.imwrite(file,img,num)保存一个图像等等。

  • 读取某个视频(文件夹)下指定图片,图片名的格式为右对齐的四位整形数。
img1 = cv.imread(path + '/' + listname + '/img/%.4d.jpg' % (i+1))
  • 绘制矩形框,左到右为图片、左上顶点坐标、右下顶点坐标、红色、框线粗细。
img = cv.rectangle(img1, (int(x), int(y)), (int(x) + int(w), int(y) + int(h)), (0, 0, 255), 2)
  • 将绘制好框线的图片写入指定路径。
cv.imwrite(save_path + '/' + listname + '/' + '%.4d.jpg' % (i + 1), img)
  • 绘图无响应
    – 原本打算直接在这个程序中使用cv直接将框好线的图片显示,但使用下面代码发现无响应,估计是图片处理得太快,程序没有等待其显示导致。
cv.namedWindow('IMG')
cv.imshow("IMG", img11)
3.from PIL import Image/import matplotlib.pyplot as plt

Matplotlib是Python的一个绘图库,是Python中最常用的可视化工具之一,可以非常方便地创建2D图表和一些基本的3D图表。

  • 绘图和主程序放在同一个进程中导致matplotlib不能实时显示图片(容易卡死)
img = Image.open(save_path + '/' + listname+'/'+ '%.4d.jpg' % (i+1))
plt.figure("Image")  # 图像窗口名称
plt.imshow(img)
plt.axis('off')  	# 关掉坐标轴为 off
plt.title('image')  # 图像题目
plt.show()
二、实现思路 1.将需要用到的路径保存到变量中待用
  • 下面是将路径赋值给变量的两种形式。
path = 'D:/code/Tracker-visdom/Data/OTB2015'  # 原数据集图片保存位置
save_path = r'D:codeTracker-visdomDatapic'  # 生成结果保存位置
 
2.读入图片、跟踪结果数据 
  • 读入指定文本文件,strip(‘n’)用于移除换行符,split(‘t’)以制表符为分割符,返回分割后的列表。
with open('D:/code/Tracker-visdom/Data/results/OTB/transt/' + listname + '.txt', 'r') as f:  # 找到结果的txt
    for line in f:
        lines.append(line.strip('n').split('t'))
3.解包lines
  • lines下的列表中存的是以字符串格式存的x,y,w,h,要取出每个数值再转成float型才能为程序使用。split(‘,’)表以指定字符分割字符串。
    aa = []
    for mm in range(0, 4):
       aa.append(float((lines[i][0].split(','))[mm]))

    [x, y, w, h]=aa
4.画框、将图片存至指定路径
  • 见一的代码。

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了利用os扩展包操作文件和文件夹、利用opencv为图片绘制框线的操作,下一篇博客将介绍如何利用opencv将图片集转换成视频。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号