python如何將txt坐標(biāo)批量打印到原圖上
python將txt坐標(biāo)批量打印到原圖上
# -*- coding: utf-8 -*-
# liufangtao
#批量處理img和xml文件,根據(jù)xml文件中的坐標(biāo)把img中的目標(biāo)標(biāo)記出來(lái),并保存到指定文件夾。
import xml.etree.ElementTree as ET
import os, cv2
import numpy
# from tqdm import tqdm
from PIL import Image, ImageDraw, ImageFont
annota_dir = r'\ann\atxt' #txt文件夾
origin_dir = r'\testjyz\ann\bimages' #圖片文件夾
target_dir1= r'\testjyz\ann\cresult' #保存地址
class_dist = {0:'盤(pán)式絕緣子', 1:'棒式絕緣子', 2:'復(fù)合絕緣子',
3:'柱上開(kāi)關(guān)絕緣子', 4:'針式絕緣子', 5:'玻璃絕緣子',6:'懸式棒絕緣子'}
def divide_img(oriname):
img_file = os.path.join(origin_dir, oriname + '.jpg')
im = cv2.imread(img_file)
h, w = im.shape[:2]
# print(w)
# 圖像從OpenCV格式轉(zhuǎn)換成PIL格式
img_PIL = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img_PIL)
#字體路徑和字體大小
font = ImageFont.truetype('SimHei.ttf', 40)
xml_file = open(os.path.join(annota_dir, oriname + '.txt')) # 讀取每個(gè)原圖像的xml文件
# print(xml_file)
for bbox in xml_file.readlines():
id, x1, y1, x2, y2 = float(bbox.split(' ')[0]), float(bbox.split(' ')[1]), float(bbox.split(' ')[2]), float(bbox.split(' ')[3]), float(bbox.split(' ')[4])
xmin = ((x1*2*w)-x2*w)/2
xmax = ((x1*2*w)+x2*w)/2
ymin = ((y1*2*h)-y2*h)/2
ymax = ((y1*2*h)+y2*h)/2
# print(xmin, ymin, xmax, ymax)
# cv2.rectangle(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
# 在邊界框的兩點(diǎn)(左上角、右下角)畫(huà)矩形,無(wú)填充,邊框紅色,邊框像素為5
draw.rectangle(((xmin, ymin), (xmax, ymax)), fill=None, outline='red', width=5)
draw.text((xmin, ymin-40), class_dist[id], font=font, fill=(0, 255, 0))
# 轉(zhuǎn)換回OpenCV格式
img_OpenCV = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR)
img_name = oriname + '.jpg'
print(img_name)
to_name = os.path.join(target_dir1, img_name)
cv2.imwrite(to_name, img_OpenCV)
img_list = os.listdir(origin_dir)
for name in img_list:
divide_img(name.rstrip('.jpg'))python根據(jù)txt文件批量提取圖片
Python代碼:
根據(jù)txt文件批量提取圖片并保存至另一文件夾,用于深度學(xué)習(xí)-圖片數(shù)據(jù)預(yù)處理
import os
import shutil
# 根據(jù) 標(biāo)簽列表/txt文件 批量提取圖片
name_list = open('val.txt', 'r')
# print(name_list)
# 圖片路徑
tu_dir = 'label'
# 保存路徑
save = '/val/label'
dir_name = []
# 獲取文件名
for i in name_list:
dir_name.append(os.path.basename(i.replace('\n', '')))
# print(dir_name)
# 批量復(fù)制
for i in dir_name:
shutil.copy(tu_dir + '/' + i, save + '/' + i)總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3圖片轉(zhuǎn)換二進(jìn)制存入mysql
MYSQL是支持把圖片存入數(shù)據(jù)庫(kù)的,也相應(yīng)的有一個(gè)專(zhuān)門(mén)的字段BLOB (Binary Large Object),即較大的二進(jìn)制對(duì)象字段,看下面代碼2013-12-12
對(duì)pandas處理json數(shù)據(jù)的方法詳解
今天小編就為大家分享一篇對(duì)pandas處理json數(shù)據(jù)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
淺談Django中的數(shù)據(jù)庫(kù)模型類(lèi)-models.py(一對(duì)一的關(guān)系)
今天小編就為大家分享一篇淺談Django中的數(shù)據(jù)庫(kù)模型類(lèi)-models.py(一對(duì)一的關(guān)系),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python實(shí)現(xiàn)監(jiān)控程序執(zhí)行時(shí)間并將其寫(xiě)入日志的方法
這篇文章主要介紹了Python實(shí)現(xiàn)監(jiān)控程序執(zhí)行時(shí)間并將其寫(xiě)入日志的方法,實(shí)例分析了Python日志操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06
Python中的上下文管理器相關(guān)知識(shí)詳解
這篇文章主要介紹了Python中的上下文管理器相關(guān)知識(shí)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
keras 實(shí)現(xiàn)輕量級(jí)網(wǎng)絡(luò)ShuffleNet教程
這篇文章主要介紹了keras 實(shí)現(xiàn)輕量級(jí)網(wǎng)絡(luò)ShuffleNet教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python3安裝pip3(install pip3 for python 3.x)
這篇文章主要為大家詳細(xì)介紹了install pip3 for python 3.x,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Flask框架之?dāng)?shù)據(jù)交互的實(shí)現(xiàn)
本文主要介紹了Flask框架之?dāng)?shù)據(jù)交互的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06

