1

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()で表示できるので、間違いなく問題ありません。

ドキュメントはこれについてあまり明確ではないので、どんな助けでも大歓迎です。

4

1 に答える 1

1

コメントで述べたように、コードは正しいです。確かに、私はopencv 2.4.1でテストしましたが、結果は期待どおりでした。だから私は問題がここで言及されていない何かにあると思います。

于 2012-07-01T05:16:46.797 に答える