##前提・実現したいこと
画像内で指定した領域に平均フィルタをかけて、フィルタをかける前の画像との誤差を画素ごとの画素値の差で求め、それが最大になる場合と最小になる場合の領域の位置と処理後の画像を求めようとしています。
誤差は処理前後の画像のrgb値の差の二乗を求め、それらの合計によって定義します。
##発生している問題
誤差の計算の動作確認を行ったところ、演算は行えるもののprintの結果が出力されません。
[Finished in 10.846s]のみが表示されます。
問題点や解決法をご教示いただけると幸いです。
該当のソースコード
python
1from PIL import Image 2import numpy as np 3import cv2 4import matplotlib.pyplot as plt 5import math 6 7 8def main(): 9 F = cv2.imread("mario.jpg") 10 m, n, c = F.shape 11 h = 30 12 M = math.floor(m/h) 13 N = math.floor(n/h) 14 im = F[1:M*h, 1:N*h] 15 list = [] 16 for i in range(h): 17 for j in range(h): 18 D = im[i:(i+(M-1)*h-1), j:(j+(N-1)*h-1)] 19 P = cv2.blur(D, (h, h)) 20 List = [] 21 for x in range((M-1)*h-1): 22 for y in range((N-1)*h-1): 23 Db,Dg,Dr = D[x,y] 24 Pb,Pg,Pr = P[x,y] 25 e = pow(int(Dr)-int(Pr), 2)+pow(int(Dg)-int(Pg), 2)+pow(int(Db)-int(Pb), 2) 26 List.append(e) 27 return List 28 E = sum(List) 29 list.append(E) 30 return list 31 Emin = min(list) 32 Emax = max(list) 33 print(Emin) 34 print(Emax) 35 36 37if __name__ == '__main__': 38 main()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。