ひょんなことから機械学習を始めました。
GBDT(勾配ブースティング)とNN(ニューラルネットワーク)とのスタッキングを目的に、目下NNの勉強中です。
その中、cv2.resizeで配列のサイズ変更をしている際、データの列数が513以上になると下記エラーメッセージが発生しました。
<<エラーメッセージ>>
OpenCV(4.5.1) /tmp/pip-req-build-tk9iuyva/opencv/modules/imgproc/src/resize.cpp:3688: error: (-215:Assertion failed) !dsize.empty() in function 'resize'
<<ソースコード>>(エラーを簡単に再現できるようにコードを変更していますが、本質は同じです)
import numpy as np
import os
import cv2
np0 = np.ones((1,1,513))
np0 = cv2.resize(np0.astype(float), (256,1))
np0 = np0.reshape(-1, 256, 1, 513)
print(np0.shape)
上記コードの『513』が『512』以下だとエラーは発生しません。
数日かかっても解決できなかったのでとあるサイトで質問すると、即、ご教授いただけました。
<<ご教授いただいた回答>>
OpenCV C++ image.reshape not working properly?
cv2.split() doesn't work beyond 512 channels
<<判ったこと>>
そういう仕様だったという事でした。。。
まだまだだなぁと痛感した次第です。