一、 安装 tensorflow object detection api 以及利用faster_rcnn_inception_v2_coco模型做扑克识别
https://blog.csdn.net/csdn_6105/article/details/82933628
二、安装 tensorflow object detection api 以及基于ssd_mobilenet模型实现目标检测
https://www.cnblogs.com/White-xzx/p/9503203.html
三、 安装tensorflow-gpu版本
step1. conda create --name tfg python=3.6
step2. conda activate tfg
step3. conda install cudnn cudatoolkit numba
step4. conda install tensorflow-gpu
step5:import tensorflow as tf #验证成功与否
#安装使用豆瓣的源速度快很多
pip install XXX -i https://pypi.douban.com/simple
-------------------------------------------------------------------------------------------------
提前修改minidom.py 去除<?xml version="1.0" ?>
原因是
所以可以修改minidom.py 最方便
--------------------------------------------------------------------------------------------------
1.修改XML文件floder 、filename 、path
import os
import xml.dom.minidom
import xml.etree.ElementTree
xmldir = './annotations/' #你的xml文件的路經,注意最后一定要有'/'
for xmlfile in os.listdir(xmldir):
xmlname = os.path.splitext(xmlfile)[0]
#读取 xml 文件
dom = xml.dom.minidom.parse(os.path.join(xmldir,xmlfile))
root = dom.documentElement
item=root.getElementsByTagName('path')
a,b=os.path.splitext(xmlfile)
#获取标签对的名字,并为其赋一个新值
root.getElementsByTagName('folder')[0].firstChild.data = 'annotations'
root.getElementsByTagName('filename')[0].firstChild.data = str(a)+ '.jpg'
#root.getElementsByTagName('path')[0].firstChild.data = '/home/dulingwen/Pictures/road/' + xmlname + '.jpg'
root.getElementsByTagName('path')[0].firstChild.data = '/mnt/object_detection/colorImage/20180601/JPEGImages'
#修改并保存文件
xml_specific = xmldir + xmlfile
with open(xml_specific,'w') as fh:
dom.writexml(fh)
2. 将新做好的xml文件按照2019_00000格式修改名字
from PIL import Image
import os.path
import glob
import xml.etree.ElementTree as ET
import xml.dom.minidom
i = 1357 #你想修改的数字i++ 2019_001357.jpg
xmldir = "../new_xml"
imgsdir = "../jpg"
for xmlfile in os.listdir(xmldir):
xmlname = os.path.splitext(xmlfile)[0]
for pngfile in os.listdir(imgsdir):
pngname = os.path.splitext(pngfile)[0]
if pngname == xmlname:
# 修改图片文件名
# 图片文件名修改前后的路径
olddir = os.path.join(os.path.abspath(imgsdir), pngname + ".jpg")
newdir = os.path.join(os.path.abspath(imgsdir), "2019_00"+str(i)+".jpg")
os.rename(olddir, newdir)
print(xmlfile, '----->', "2019_00"+str(i) + '.jpg')
# 修改filename结点属性
# 读取xml文件
dom = xml.dom.minidom.parse(os.path.join(xmldir, xmlfile))
root = dom.documentElement
# 获取标签对filename之间的值并赋予新值i
root.getElementsByTagName('filename')[0].firstChild.data ="2019_00"+ str(i) + '.jpg'
# 将修改后的xml文件保存
# xml文件修改前后的路径
old_xmldir = os.path.join(xmldir, xmlfile)
new_xmldir = os.path.join(xmldir, "2019_00"+str(i)+'.xml')
# 打开并写入
with open(old_xmldir, 'w') as fh:
dom.writexml(fh)
os.rename(old_xmldir, new_xmldir)
i += 1
print('total number is ', i)
3.修改XML中的标签名
import os
import xml.etree.ElementTree as ET
#批量修改VOC数据集中xml标签文件的标签名称
def changelabelname(inputpath):
listdir = os.listdir(inputpath)
for file in listdir:
if file.endswith('xml'):
file = os.path.join(inputpath,file)
tree = ET.parse(file)
root = tree.getroot()
for object1 in root.findall('object'):
for sku in object1.findall('name'): #查找需要修改的名称
if (sku.text == 'oriented arrow'): #‘preName’为修改前的名称
sku.text = 'oriented_arrow' #‘TESTNAME’为修改后的名称
tree.write(file,encoding='utf-8') #写进原始的xml文件并避免原始xml中文字符乱码
else:
pass
else:
pass
if __name__ == '__main__':
inputpath = r'/mnt/hdd/home/Annotations' #此处替换为自己的路径
changelabelname(inputpath)
4. 批量将文件夹下的所有视频按40一帧截成图片并且
按"年月日_时分秒毫秒_''文件夹名'"修改图片名字 //20180601_144950302_JPG1.jpg
import cv2
import os
import time
def save_img():
video_path = './'
videos = os.listdir(video_path)
for video_name in videos:
file_name = video_name.split('.')[0]
folder_name = video_path + file_name
os.makedirs(folder_name,exist_ok=True)
vc = cv2.VideoCapture(video_path+video_name) #读入视频文件
c=0
a=0
rval=vc.isOpened()
while rval: #循环读取视频帧
ct = time.time()
local_time = time.localtime(ct)
data_head = time.strftime('%Y%m%d_%H%M%S',time.localtime(time.time()))
data_secs = (ct - int(ct)) * 1000
time_stamp = "%03d" % data_secs
new_time = str(data_head) + str(time_stamp)
rval, frame = vc.read()
pic_path = folder_name+'/'
a=a+1
if (a%40) == 0:
print("write img")
cv2.imwrite(str(new_time) + '_JPG01' + '.jpg', frame)#""修改你想要的名字
cv2.waitKey(1)
vc.release()
print('save_success')
print(folder_name)
save_img()