質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

2995閲覧

フォルダの画像に一括処理がしたい

KenyaTanaka

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/04/19 18:11

前提・実現したいこと

機械学習のために画像の水増しを試みています。
mizumasiフォルダに一括で処理を行いたいのですがうまく行きません。

発生している問題・エラーメッセージ

(-215:Assertion failed) m.dims >= 2 in function 'Mat'

該当のソースコード

python
2つのコードを組み合わせてみました。

####その1 trans.py
import cv2
import numpy as np
import sys
import os

ヒストグラム均一化

def equalizeHistRGB(src):

RGB = cv2.split(src) Blue = RGB[0] Green = RGB[1] Red = RGB[2] for i in range(3): cv2.equalizeHist(RGB[i]) img_hist = cv2.merge([RGB[0],RGB[1], RGB[2]]) return img_hist

ガウシアンノイズ

def addGaussianNoise(src):
row,col,ch= src.shape
mean = 0
var = 0.1
sigma = 15
gauss = np.random.normal(mean,sigma,(row,col,ch))
gauss = gauss.reshape(row,col,ch)
noisy = src + gauss

return noisy

salt&pepperノイズ

def addSaltPepperNoise(src):
row,col,ch = src.shape
s_vs_p = 0.5
amount = 0.004
out = src.copy()
# Salt mode
num_salt = np.ceil(amount * src.size * s_vs_p)
coords = [np.random.randint(0, i-1 , int(num_salt))
for i in src.shape]
out[coords[:-1]] = (255,255,255)

# Pepper mode num_pepper = np.ceil(amount* src.size * (1. - s_vs_p)) coords = [np.random.randint(0, i-1 , int(num_pepper)) for i in src.shape] out[coords[:-1]] = (0,0,0) return out

if name == 'main':
ルックアップテーブルの生成
min_table = 50
max_table = 205
diff_table = max_table - min_table
gamma1 = 0.75
gamma2 = 1.5

LUT_HC = np.arange(256, dtype = 'uint8' ) LUT_LC = np.arange(256, dtype = 'uint8' ) LUT_G1 = np.arange(256, dtype = 'uint8' ) LUT_G2 = np.arange(256, dtype = 'uint8' ) LUTs = [] 平滑化用 average_square = (10,10) ハイコントラストLUT作成 for i in range(0, min_table): LUT_HC[i] = 0 for i in range(min_table, max_table): LUT_HC[i] = 255 * (i - min_table) / diff_table for i in range(max_table, 255): LUT_HC[i] = 255 その他LUT作成 for i in range(256): LUT_LC[i] = min_table + i * (diff_table) / 255 LUT_G1[i] = 255 * pow(float(i) / 255, 1.0 / gamma1) LUT_G2[i] = 255 * pow(float(i) / 255, 1.0 / gamma2) LUTs.append(LUT_HC) LUTs.append(LUT_LC) LUTs.append(LUT_G1) LUTs.append(LUT_G2) 画像の読み込み img_src = cv2.imread(sys.argv[1], 1) trans_img = [] trans_img.append(img_src) LUT変換 for i, LUT in enumerate(LUTs): trans_img.append( cv2.LUT(img_src, LUT)) 平滑化 trans_img.append(cv2.blur(img_src, average_square)) ヒストグラム均一化 trans_img.append(equalizeHistRGB(img_src)) ノイズ付加 trans_img.append(addGaussianNoise(img_src)) trans_img.append(addSaltPepperNoise(img_src)) 保存 if not os.path.exists("trans_images"): os.mkdir("trans_images") base = os.path.splitext(os.path.basename(sys.argv[1]))[0] + "_" img_src.astype(np.float64) for i, img in enumerate(trans_img): 比較用 cv2.imwrite("trans_images/" + base + str(i) + ".jpg" ,cv2.hconcat([img_src.astype(np.float64), img.astype(np.float64)])) cv2.imwrite("trans_images/" + base + str(i) + ".jpg" ,img)

####その2 self.py
import glob
import sys

l=glob.glob('./mizumasi/*')

for images in l:
sys_argv[0]=images

試したこと

python trans.py self.py
として実行しました

補足情報(FW/ツールのバージョンなど)

Python 3.7.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/04/20 05:39

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
KenyaTanaka

2019/04/21 14:56

ご指摘ありがとうございます、修正いたしますね。
guest

回答1

0

ベストアンサー

python trans.py self.py

これではtrans.pyのパラメータとして**self.pyを渡している**ことになり、画像ではないので提示エラーが発生しています。

意図しているのはself.pyで列挙した各ファイルに対して画像処理をおこなうことだと思います。
その場合は2つのファイルを統合するか、trans.pyをモジュール化しself.pyから処理関数を呼び出すように修正してはいかがでしょうか。

投稿2019/04/19 23:40

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問