前提・実現したいこと
opencvを用いて2つの異なる大きさの画像(デプス画像から抽出した線(1008x981)と
オルソ画像(1003x975))を重ねたい
発生している問題・エラーメッセージ
line 31 in canny add=cv2.addweighted(pi3,1,edges,0.4,0) cv2.error: OpenCV(3.4.3) ~~\arithm.cpp:659: error:(-209:size of input argument do not match) The operation is neither 'array op array'(where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'arithm_op'
該当のソースコード
python3
1import numpy as np 2import cv2 3 4class Opencv_test_canny: 5 def __init__(self,file,file_2): 6 self.file=file#デプス画像(エッジ抽出する画像) 7 self.file_2=file_2#オルソ画像(エッジ線を重ねる画像) 8 9 def open_pic(self,file,file_2):#ファイルを読み込みBGRをRGBに変換する関数 10 pic=cv2.imread(file) 11 pic3=cv2.imread(file_2) 12 pic_color=cv2.cvtColor(pic,cv2.COLOR_BGR2RGB) 13 return pic,pic_color,pic3 14 15 def canny(self,pic,pic3):#Canny処理してエッジ検出した後に元の関数と重ねる関数 16 #GRAYスケールでのエッジ抽出 17 """img=cv2.cvtColor(pic,cv2.COLOR_BGR2GRAY) 18 edges=cv2.Canny(img,100,200) 19 edges2=np.zeros_like(pic)""" 20 #RGBでのエッジ抽出 21 b,g,r=cv2.split(pic) 22 canny_b=cv2.Canny(b,100,200) 23 canny_g=cv2.Canny(g,100,200) 24 canny_r=cv2.Canny(r,100,200) 25 edges=cv2.bitwise_or(canny_b,canny_g) 26 edges=cv2.bitwise_or(edges,canny_r) 27 edges2=np.zeros_like(pic) 28 for i in (0,1,2): 29 edges2[:,:,i]=edges 30 add=cv2.addWeighted(pic3,1,edges2,0.4,0)#ここでpic,edge2を重ね合わせている 31 return add 32 33 34 35 36if __name__ == '__main__': 37 #以下テスト用 38 39 file="~~~/searchImge/depth.tif" 40 file_2="~~~/searchImge/oruso.tif" 41 a=Opencv_test_canny(file,file_2) 42 b,c,d=a.open_pic(file,file_2) 43 d=a.canny(b,d) 44 cv2.imshow("",d) 45 cv2.waitKey(0) 46 cv2.destroyAllWindows() 47
試したこと
for i in (0,1,2): edges2[:,:,i]=edges edges3=cv2.cvtColor(edges2,cv2.COLOR_GRAY2BGR)###追加コード pic3=cv2.resize(pic3,(1008,981))###追加コード add=cv2.addWeighted(pic3,1,edges2,0.4,0) return add
エラーを見たとき2つの画像の大きさが違うため重ねられないと言われたから素直に画像をリサイズしてみたが同じエラーが出てしまった
pic3=cv2.resize(pic3,(1008,981))
またエッジ線の画像はGRAYスケールで出力されているため、これとカラー画像であるオルソ画像を重ねようとしたときビット数の問題でエッジ線の画像が少ししか出力されないと思ったため下記を追加してみたが検討違いだった
edges3=cv2.cvtColor(edges2,cv2.COLOR_GRAY2BGR)
補足情報(FW/ツールのバージョンなど)
デプス画像(1008x981),デプス画像より得たエッジ線(1008x981),オルソ画像(1003x975)
opencv3.4.3 python3 VSCode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。