前提・実現したいこと
元の画像配列から、1-2行、{(1-2行)-(3-4行)/2}、3-4行、{(3-4行)-(5-6行)/2}、…
といった計算結果を元の配列と同じ大きさの配列に入れたものを作ろうとしています。
発生している問題・エラーメッセージ
only size-1 arrays can be converted to Python scalars
該当のソースコード
python
1import cv2 2import matplotlib.pyplot as plt 3import numpy as np 4from PIL import Image 5 6img = cv2.imread('*.jpg') 7img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 8array_original = np.array(img) 9#サンプルは[row=478,column=640]でやってます。 10row = array_original.shape[0] 11column = array_original.shape[1] 12data_array = np.empty(shape = (row, column)) 13 14for x in range(0,row-3,2): 15 value0 = float(array_original[x]) - float(array_original[x+1]) 16 value1 = float(array_original[x+2]) - float(array_original[x+3]) 17 value2 = float((value0 - value1)/2) 18 value0 = value0 + 128 #この辺でエラーが出ています 19 value1 = value1 + 128 20 value2 = value2 + 128 21 data_array[x] = value0_1 22 data_array[x+1] = value1_1 23 data_array[x+2] = value2_1 24 25data_array = np.clip(data_array,0,255) 26data_array = data_array.astype(np.uint8) 27img = Image.fromarray(data_array) 28img = np.array(img) 29 30img = Image.fromarray(data_array) 31plt.imshow(img) 32plt.show() 33 34
試したこと
元々2重のfor文を使って、要素1つ1つ計算していたものを処理速度を上げるために1行ごとで計算しようと今回のものに変更しました。for文をもとに戻せば正常に動作します。
補足情報(FW/ツールのバージョンなど)
VisualStudioCodeで動かしています。
python3.6.12
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。