このファイルでは、画像を取り込み、色ごとに識別して、該当の色の部分を大きさごとに抽出します。そしてメモに大きさ毎に抽出した数を記載するというプログラムです。(途中は省略しています。ファイルの読み込みなどに影響があると思っています)
ファイルにエラーは生じませんが、何も実行されないです。
どこを直せばよいのでしょうか?
Python
1import os 2import glob 3import cv2 4import numpy as np 5import scipy.ndimage as ndimage 6import matplotlib.pyplot as plt 7import math 8import pprint 9import tkinter 10from tkinter import filedialog 11 12#粒子のカウント 13def count(path): 14 img = cv2.imread(path) 15 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 16 17 #色ごとに2値化 18 red1 = cv2.inRange(hsv,np.array([150, 0,125]),np.array([179,255,255])) 19 red2 = cv2.inRange(hsv,np.array([0, 0,125]),np.array([10,255,255])) 20 red = red1 + red2 21 blue = cv2.inRange(hsv,np.array([90, 0,125]),np.array([150,255,255])) 22 green = cv2.inRange(hsv,np.array([10, 0, 125]), np.array([90,255,255])) 23 #合成 24 all = green 25 #エラーが出るので保存、読み込み 26 cv2.imwrite('C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif',all) 27 all = cv2.imread("C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif") 28 29 #モルフォロジー 30 kernel = np.ones((2,2),np.uint8) 31 all = cv2.morphologyEx(all, cv2.MORPH_GRADIENT, kernel) 32 #ノイズの除去 33 #all = cv2.medianBlur(all, 3) 34 #all = cv2.cvtColor(all, cv2.COLOR_BGR2GRAY) 35 36 #fill holes 37 all = ndimage.binary_fill_holes(all).astype(int) * 255 38 39 #エラーが出るため保存、読み込みして改めて二値化 40 cv2.imwrite('C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif',all) 41 all = cv2.imread("C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif") 42 all = cv2.cvtColor(all, cv2.COLOR_BGR2GRAY) 43 ret,thresh = cv2.threshold(all,127,255,cv2.THRESH_BINARY) 44 45 46 47#省略 48 49 50 51 52#指定されたフォルダ内に新しくフォルダーを作成し、そのフォルダーに処理した画像を格納 53def serch(dir): 54 path_list = glob.glob(dir + '\*') 55 56 for i in path_list: 57 folder = i 58 file =os.path.basename(i) 59 new_folder = file + '_countver2' 60 name = os.path.join(*[dir, new_folder]) 61 print(i) 62 os.makedirs(name) 63 64 triming(folder,name) 65 bundel_count(name) 66 return 67 68#フォルダの指定 69#指定フォルダ-フォルダ-画像 の形 70serch("C:\\Users\\seiya\\OneDrive\\Desktop\\9gat\\mae") 71
このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
実行されないとは、なにがどう実行されないんでしょうか。
実行されていた時は
大きさごとの粒子の数がPython上に表示される+画像ファイルとは別にメモに大きさ毎の粒子数が記載されて新しいファイルを作成される
というものだったのですが、Python上で1行空白があり、元の画面に戻るだけになってしまっています
[というものだった]ということは、以前はどうさしていたのですよね?
動作していたときから内容を変更したのであれば、それが原因です。
そうでなければ、環境の問題です。
こころあたりはありますか。
PCを変えて、ファイルの指定場所を変更しただけです。
PCを変えて以降、できていないです
https://teratail.com/help/avoid-asking
の「過去に投稿した質問と同じ内容の質問」を見てください
https://teratail.com/questions/68r02n9sl8mtdt
> serch("C:\\Users\\seiya\\OneDrive\\Desktop\\9gat\\mae")
> ファイルの指定場所を変更しただけ
以前実行されてた時は、onedriveではない場所を指定してた、ということはありませんか?
コード中の全てのパス指定をonedriveではない場所に変えたら、どうなりますでしょうか?
(画像ファイルの置き場所も、コードの変更に合わせて当然変える)
あと、
> cv2.imwrite('C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif',all)
とか数ヶ所の「Desktop\\」と「all.tif」の間にスペースがありますが、そのスペースを全部削除してみてください