https://www.robotech-note.com/entry/2016/12/08/204143
ここを元に、フォルダ内画像一括処理を試みようとしました。
python
1# -*- coding: utf-8 -*- 2import os 3import cv2 4 5def main(): 6 data_dir_path = u"./画像ディレクトリ名/" 7 file_list = os.listdir(r'./画像ディレクトリ名/') 8 9 for file_name in file_list: 10 root, ext = os.path.splitext(file_name) 11 if ext == u'.png' or u'.jpeg' or u'.jpg': 12 abs_name = data_dir_path + '/' + file_name 13 image = cv.imread(abs_name) 14 #以下各画像に対する処理を記載する 15 16if __name__ == '__main__': 17 main()
「#以下各画像に対する処理を記載する」の直下に、ある画像に関する処理を書き込めばよいのだと思うのですが、この「ある画像」のファイル名は何なんでしょうか?
「u」でも「u.png」でも「file_name」でも「file_name.png」でもなかった。
特定の画像を二値化するプログラムを作り、実際に動いたが、複数の画像に対し行う必要があるため、1つ1つやるのは大変であるから今度は一括処理をしたいと思ったのですが、
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\core\src\arithm.cpp:1743: error: (-215:Assertion failed) ! _src.empty() in function 'cv::inRange'
という、ファイル名に起因?するエラーが出ます。
ちなみにとりあえず作ったプログラム(エラーが生じる)は、
python
1import os 2import cv2 3 4os.chdir('C://Users//username//Desktop//cv') 5 6def main(): 7 data_dir_path = u"./ok/" 8 file_list = os.listdir(r'./ok3/') 9 10 for file_name in file_list: 11 root, ext = os.path.splitext(file_name) 12 if ext == u'.png' or u'.jpeg' or u'.jpg': 13 abs_name = data_dir_path + '/' + file_name 14 image = cv.imread(abs_name) 15 #以下各画像に対する処理を記載する 16 17img = cv2.imread('file_name') # 画像の読み出し 18img = cv2.inRange(img, (120, 21, 145), (214,152,204)) 19 20cv2.imwrite('nitikafile_name',img) # 画像の保存 21 22if __name__ == '__main__': 23 main()
になりまう、ごく初歩的なところで引っかかっている気がします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/01/15 10:40
2021/01/15 10:57
退会済みユーザー
2021/01/15 11:20 編集
退会済みユーザー
2021/01/15 11:26
2021/01/15 12:23
退会済みユーザー
2021/01/15 12:30