1

Xcode 5 と OpenCV を使用して、Mac でいくつかのアルゴリズムを開発しています。私はC++としてそれを行います。

私は行列を定義します:

Mat src;
int cols = 560;
int rows = 260;
src.create( cols, rows, DataType<double>::type);

コードでは、次のようなループがあります。

for (int i=0; i<src.rows; i++) {
        const double* srcIterator = src.ptr<double>(i);
        for (int j=0; j<src.cols; j++) {
            double temp = srcIterator[j];
            temp++;
        }
    }

読んだフレームごとにこのループを持つ関数を読みました。ほとんどの場合、正しく実行されます (無限ループで実行され、常に問題ありません)。

一部の実行では、exc_bad_access エラーが発生します。それが起こったとき、それは最初のフレームで起こりました。エラーは次の行にあります: double temp = srcIterator[j];

それが起こったとき、j は 560 をはるかに下回り、常に 500 を超えていましたが、毎回異なる値を持っています。

列と行を混在させているのではないかと思いましたが、それが正しければ、j が 260 (行のサイズ) のときにこのエラーが発生します。

お願いします、誰でもそれが何であるか推測できますか?

4

1 に答える 1

2

ドキュメントから、への呼び出しで行と列のパラメーターを反転したようですcv::Mat::create()。これは、i と j に大きな値を指定して読み取ろうとすると、無効なアクセスが発生することも説明します。

于 2013-11-07T19:57:44.190 に答える