このファイルでは、画像を取り込み、色ごとに識別して、該当の色の部分を大きさごとに抽出します。そしてメモに大きさ毎に抽出した数を記載するというプログラムです。(途中は省略しています。ファイルの読み込みなどに影響があると思っています)
ファイルにエラーは生じませんが、何も実行されないです。
どこを直せばよいのでしょうか?
Python
import os import glob import cv2 import numpy as np import scipy.ndimage as ndimage import matplotlib.pyplot as plt import math import pprint import tkinter from tkinter import filedialog #粒子のカウント def count(path): img = cv2.imread(path) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #色ごとに2値化 red1 = cv2.inRange(hsv,np.array([150, 0,125]),np.array([179,255,255])) red2 = cv2.inRange(hsv,np.array([0, 0,125]),np.array([10,255,255])) red = red1 + red2 blue = cv2.inRange(hsv,np.array([90, 0,125]),np.array([150,255,255])) green = cv2.inRange(hsv,np.array([10, 0, 125]), np.array([90,255,255])) #合成 all = green #エラーが出るので保存、読み込み cv2.imwrite('C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif',all) all = cv2.imread("C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif") #モルフォロジー kernel = np.ones((2,2),np.uint8) all = cv2.morphologyEx(all, cv2.MORPH_GRADIENT, kernel) #ノイズの除去 #all = cv2.medianBlur(all, 3) #all = cv2.cvtColor(all, cv2.COLOR_BGR2GRAY) #fill holes all = ndimage.binary_fill_holes(all).astype(int) * 255 #エラーが出るため保存、読み込みして改めて二値化 cv2.imwrite('C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif',all) all = cv2.imread("C:\\Users\\seiya\\OneDrive\\Desktop\\ all.tif") all = cv2.cvtColor(all, cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(all,127,255,cv2.THRESH_BINARY) #省略 #指定されたフォルダ内に新しくフォルダーを作成し、そのフォルダーに処理した画像を格納 def serch(dir): path_list = glob.glob(dir + '\*') for i in path_list: folder = i file =os.path.basename(i) new_folder = file + '_countver2' name = os.path.join(*[dir, new_folder]) print(i) os.makedirs(name) triming(folder,name) bundel_count(name) return #フォルダの指定 #指定フォルダ-フォルダ-画像 の形 serch("C:\\Users\\seiya\\OneDrive\\Desktop\\9gat\\mae")
このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
実行されないとは、なにがどう実行されないんでしょうか。
実行されていた時は
大きさごとの粒子の数が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」の間にスペースがありますが、そのスペースを全部削除してみてください
まだ回答がついていません
会員登録して回答してみよう