PythonでOPENCVで画像処理をしておりますが、
ファイルが多いので高速化検討しようと考えており、並列処理したく思います。
現在は、OPENCVで画像ファイルを並列処理できておりますが、
参照している画像ファイルが時折、重複するときがあります。
そこで、以下コードのどの部分を変更したら画像ファイルの重複を避けれますでしょうか。
WIN10、PsScriter(Spyder)使用しております。
import cv2 import numpy as np import glob import os import pandas as pd import time import threading x_1,y_1,z_1,z_1_1=[],[],[],[] a,b=[],[] #保存先 r=r"◎" j1=["◎"] for j2 in j1: a.clear() t1 = time.time() dock = r"◎" for folder,subfolders,files in os.walk(dock + "\" + str(j2)): a.append('{}'.format(folder)) j=0 for d in a: global q def worker1():#-------------------------------------- global q while True: # for a in range(5): img1 = imread(r_1[q]) # 画像ファイル読み込み img1_d_1=r_1[q] q=q+1 if q>d_1-1: break img1_d_2=os.path.basename(r_1[q]) img1_d_3=img1_d_2.replace(".jpg","") x_1.append(img1_d_3) img_ch0 = cv2.split(img1)[0] w_num = cv2.countNonZero(img_ch0) y_1.append(w_num) #---------------------------------------------------- def worker2(): global q while True: if q>d_1-1: break img2 = imread(r_1[q-1]) # 画像ファイル読み込み img2_d_1=r_1[q-1] q=q+1 img2_d_2=os.path.basename(img2_d_1) img2_d_3=img2_d_2.replace(".jpg","") x_1.append(img2_d_3) img_ch0 = cv2.split(img2)[0] w_num = cv2.countNonZero(img_ch0) y_1.append(w_num) global q r_1 = glob.glob(d + "\*.jpg") j=j+1 print(j) print(d) q=0 d_1=len(r_1) t1 = threading.Thread(target=worker1) # t1 スレッドをデーモン化する t1.setDaemon(True) t2 = threading.Thread(target=worker2) x_1=[] y_1=[] t1.start() t2.start() print('started') t1.join() print("--end--") t2.join() print(set(x_1)) print(len(set(x_1))) print(y_1)
何卒、宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー