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 回答