OpenCVのhconcatがなぜかエラーになるとき
表題の通りです。エラーメッセージと原因がシンプルに結びついているページがなかったので記事にしました。
ある画像と別の画像(同じ画像でもよいですが)を連結したい時は、OpenCVのhconcate
やvconcat
を使うのが便利です。例えば、hconat
(水平方向への連結)をする場合は当然、お互いの縦ピクセル数を揃える必要があるのですが、時々それを揃えた上でもなぜかエラーが出てくることがあります。
こんな感じに。
combined_image = cv2.hconcat([left_image,right_image])
Exception has occurred: error
OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\core\src\matrix_operations.cpp:68: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].rows == src[0].rows && src[i].type() == src[0].type() in function 'cv::hconcat'
なんだか行列計算のサイズがあってなさそうです。リサイズを間違えたのでしょうか。print
でデバッグします。
print(left_image.shape)
print(right_image.shape)
(256, 256)
(256, 256)
あっとるやないかーい!
結論的に言うと、データの型が合っていないのが原因です。numpyを使って合わせましょう。
left_image = np.array(left_image)
left_image = out.astype('int32')
right_image = np.array(right_image)
right_image = canny.astype('int32')
これで連結できるようになります。
おまけ
ほかありがちなエラー。
高さが違う
リサイズしましょう。cv2.resize(img,(x,y))
でできます。
画像を読み込めていない
初歩的ですがありがちです。imread
だとパス指定をミスっていても、エラーにならずNone
が返されるのです。print
したらNone
になってないか確認しましょう。
グレースケールとカラー画像を合成しようとしている
これもありがちです。グレーの画像の方もデータ上はカラー画像にする必要があります。cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
でできます。
Author And Source
この問題について(OpenCVのhconcatがなぜかエラーになるとき), 我々は、より多くの情報をここで見つけました https://qiita.com/hibit/items/82de8422c7ec3a1aa774著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .