1. 程式人生 > 其它 >(遇到問題)小工具-txt2list-list2img根據txt檔案的名單,讀取一個資料夾到裡面的檔案到另外一個檔案(針對HDFNet演算法將訓練集放在一起)

(遇到問題)小工具-txt2list-list2img根據txt檔案的名單,讀取一個資料夾到裡面的檔案到另外一個檔案(針對HDFNet演算法將訓練集放在一起)

技術標籤:SOD演算法-CVPR-ICCV-ECCV

HDFNet演算法中的訓練集比較特殊,是兩個資料集(NJUD1985 and NLPR1000)的訓練部分(1485 and 700)的合併的結果
也就是說:
NJUD裡面有1985張圖片,其中1485張作為訓練,剩下的500作為測試
NLPR裡面有1000張圖片,其中700張作為訓練,整下的300張作為測試
我們要做的是從NJUD裡面根據txt檔案的索引找到這些圖片,讀取,並寫入到另外一個資料夾

1 從txt檔案中讀取地址到list

https://blog.csdn.net/qq_34489091/article/details/80652653?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

1 txt2list

2 python

import sys
result=[]
with open('accounts.txt','r') as f:
	for line in f:
		result.append(list(line.strip('\n').split(',')))
print(result)

2 根據list,轉移資料夾中的部分檔案-到另外一個資料夾

A 簡單版本

import cv2
import sys


result_list=[]

# 1 讀取列表裡
with open('njud_test_depth.txt','r') as f:
	for line in f:
		result_list.append(list(line.strip('\n').split(',')))

# 2 逐路徑讀取圖片,並寫入新的地址
for img_path in result_list:
    img_path = img_path[0] + '.png' 

    # 讀入圖片 
    img = cv2.imread(img_path, cv2.IMREAD_COLOR)  
    name = img_path[img_path.rfind("/")+1:-4]  
    file = '/home/nk/zjc/PycharmProjects/Transmit/HDFNet/list/NJUD-depth/' \
           + str(name) + '.png'
    # 寫入圖片   
    cv2.imwrite(file, img)
    # out.save('/home/nk/zjc/PycharmProjects/3ClassicAlgorithm/HOG_SVM-master/svm128/' + str(name) + '.jpg')  # todo 3

B 複雜版本(帶有備註,以及print)

import cv2
import sys


result_list=[]

# 1 讀取列表裡
with open('njud_test_depth.txt','r') as f:
	for line in f:
		result_list.append(list(line.strip('\n').split(',')))
print('檢視路徑列表->', result_list)

# 2 逐路徑讀取圖片並寫入新的地址
for img_path in result_list:
    img_path = img_path[0] + '.png'  # Depth、Mask裡面的檔案字尾是pn, Image裡面的檔案字尾是jpg
    print('檢查讀取路徑->', img_path)  # /home/nk/Datasets/Saliency/RGBDSOD/NJU2K/Depth/000188_left.png
    # 讀入圖片 
    img = cv2.imread(img_path, cv2.IMREAD_COLOR)  # 0 灰色
    # 獲取圖片的名字, .rfind表示找到“/”,+1表示從這個/之後的所有字元保留,-4表示最後這幾個去除
    name = img_path[img_path.rfind("/")+1:-4]  
    print('檢查檔名->', name)  # 000188_left
    print('檢查輸出路徑->', '/home/nk/zjc/PycharmProjects/Transmit/HDFNet/list/NJUD-depth/' \
           + str(name) + '.png')  # /home/nk/zjc/PycharmProjects/Transmit/HDFNet/list/NJUD-depth/001091_left.png
    file = '/home/nk/zjc/PycharmProjects/Transmit/HDFNet/list/NJUD-depth/' \
           + str(name) + '.png'  # Depth、Mask裡面的檔案字尾是pn, Image裡面的檔案字尾是jpg
    # 寫入圖片
    cv2.imwrite(file, img)
    # out.save('/home/nk/zjc/PycharmProjects/3ClassicAlgorithm/HOG_SVM-master/svm128/' + str(name) + '.jpg')  # todo 3