首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用敞开式CV迭代器分段故障

使用敞开式CV迭代器分段故障
EN

Stack Overflow用户
提问于 2011-05-03 22:33:57
回答 1查看 212关注 0票数 2

我想做一些像特征面这样的事情,但是有不同的图像(而不是脸)。我有一个图像向量,images。从这些图像中,我想要创建一个Mat对象,data,它包含在每一行中,一个作为行向量写出来的图像。这就是我想做的:

代码语言:javascript
复制
// This is basically a matrix that needs to have a bunch of images as rows.
Mat data(numImages, IMAGE_SIZE * IMAGE_SIZE, CV_8UC1);
// I also replaced CV_8U by images[0].type() and CV_8U. no change
MatIterator_<unsigned short> iter = data.begin<unsigned short> (),
                             iter_end = data.end<unsigned short> (), 
                             iter2;

for (i = 0; i < numImages; ++i)
{
    MatIterator_<unsigned short> begin = images[i].begin<unsigned short> ();
    MatIterator_<unsigned short> end = images[i].end<unsigned short> ();
    for (iter2 = begin; iter2 != end; iter2++)
    {
        *iter = *iter2; // Segfault is here.
        if (iter != iter_end) // safety check
            iter++;
        else
            perror("Screwed!\n"); // This does not execute!
    }
}

救命!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-03 23:39:26

我认为在您的矩阵中,每个字段都有一个字节(CV_8UC1),但是您的迭代器是“无符号短”迭代器。无符号短通常有两个字节。将其更改为

代码语言:javascript
复制
data.begin<unsigned char> ()

也可以检查stdint.h:http://en.wikipedia.org/wiki/Stdint.h

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5876516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档