ひょんなことから機械学習を始めました。

 

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

 

<<判ったこと>>

そういう仕様だったという事でした。。。

まだまだだなぁと痛感した次第です。