OpenCVを使用して、cv::Matをより小さなcv::Matに分割しようとしています。この方法をオンラインで見つけましたが、機能させることができません。たとえば640x480のcv::Matを、たとえば32 x 32のブロックに分割し、各ブロックを個別に操作したいと思います。
これが私のコードです。curr_frameには、画像全体がcv::Matとして含まれています。N_per_colとN_per_rowには、それぞれ列と行ごとのmb_szxmb_szブロックの数が含まれます。
void ClassName::partition( void )
{
for( i = 0; i < N_per_col; i += mb_sz )
{
for( j = 0; j < N_per_row; j += mb_sz )
{
cv::Mat tmp_img( curr_frame, cv::Rect( i, j, mb_sz, mb_sz ) );
// Do stuff with tmp_img here
}
}
}
これは正常にコンパイルされますが、実行時にtmp_imgにNULLピクセルでいっぱいの画像が表示されます。curr_frameは、imshow()で表示できるので、間違いなく問題ありません。
ドキュメントはこれについてあまり明確ではないので、どんな助けでも大歓迎です。