0
我需要创建一个CV ::垫从一个缓冲区,但我不希望的数据被共享,所以不能使用垫(高度,宽度,类型,数据)构造:操作cv :: Mat的内部缓冲区是否安全?
int data[100];
cv::Mat m;
m.create(10, 10, CV_32SC1); // allocate own buffer for m
for (size_t i = 0; i < 100; ++i)
{
reinterpret_cast<int*>(m.data)[i] = data[i];
}
我需要投入内部缓冲区(它总是uchar *),以便能够直接复制我想要的类型(int在这种情况下)的数据,它似乎工作。但是,我记得文档首选使用uchar *执行所有操作的方法,即将源缓冲区转换为uchar *并使用名为stepWidth的参数来获取uchar * -units中的正确偏移量。这样做是否会遇到麻烦,或者是CV_32SC1类型的Mat的缓冲区,它只是int的缓冲区,并没有什么区别?
在我的情况下对“外来数据”的话题,在多方面的问题并不适用,所以我想我不必担心。至于这个话题,我只在该页面发现了一个'foreign',它适用于共享一个缓冲区的结构。不管怎样,谢谢! – neuviemeporte 2012-03-14 08:20:18