gpt4 book ai didi

c++ - 使用 Open CV 迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:05 24 4
gpt4 key购买 nike

我想做类似 eigenfaces 的事情但具有不同的图像(不是面孔)。我有一个图像 vector ,images。从这些图像中,我想制作一个 Mat 对象,data 在每一行中包含一个写为行 vector 的图像。这是我尝试做的:

// 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!
}
}

求助!

谢谢!

最佳答案

我认为在您的矩阵中每个字段都有 1 个字节 (CV_8UC1),但您的迭代器是“unsigned short”迭代器。 Unsigned short 通常 有 2 个字节。改成

data.begin<unsigned char> ()

还要检查 stdint.h:http://en.wikipedia.org/wiki/Stdint.h

关于c++ - 使用 Open CV 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com