python如何將txt坐標(biāo)批量打印到原圖上
python將txt坐標(biāo)批量打印到原圖上
# -*- coding: utf-8 -*-
# liufangtao
#批量處理img和xml文件,根據(jù)xml文件中的坐標(biāo)把img中的目標(biāo)標(biāo)記出來,并保存到指定文件夾。
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:'盤式絕緣子', 1:'棒式絕緣子', 2:'復(fù)合絕緣子',
3:'柱上開關(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)(左上角、右下角)畫矩形,無填充,邊框紅色,邊框像素為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)文章
Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解
今天小編就為大家分享一篇Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python?裝飾器常用的創(chuàng)建方式及源碼示例解析
裝飾器(decorator)是一種高級(jí)Python語法,可以對(duì)一個(gè)函數(shù)、方法或者類進(jìn)行加工,這篇文章主要介紹了Python?裝飾器常用的創(chuàng)建方式及解析,需要的朋友可以參考下2022-04-04
Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例
這篇文章主要介紹了Python設(shè)計(jì)模式之觀察者模式,簡(jiǎn)單描述了觀察者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python觀察者模式的相關(guān)定義與使用技巧,需要的朋友可以參考下2018-01-01
python3+PyQt5 數(shù)據(jù)庫編程--增刪改實(shí)例
今天小編就為大家分享一篇python3+PyQt5 數(shù)據(jù)庫編程--增刪改實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python requests.post方法中data與json參數(shù)區(qū)別詳解
這篇文章主要介紹了Python requests.post方法中data與json參數(shù)區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Pycharm github配置實(shí)現(xiàn)過程圖解
這篇文章主要介紹了Pycharm github配置實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
解決BN和Dropout共同使用時(shí)會(huì)出現(xiàn)的問題
這篇文章主要介紹了解決BN和Dropout共同使用時(shí)會(huì)出現(xiàn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Python模擬登錄網(wǎng)易云音樂并自動(dòng)簽到
時(shí)隔三周沒有和大家見過面了,最近在研究python模擬登陸專題,話不多說,讓我們愉快地開始實(shí)現(xiàn)模擬登陸實(shí)現(xiàn)網(wǎng)易云自動(dòng)簽到,需要的朋友可以參考下2021-06-06

