gpt4 book ai didi

c++ - 来自 OpenCV 中用户分配数据的 Mat 构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:10:08 25 4
gpt4 key购买 nike

我正在尝试使用此构造函数从我在内存中分配的一些数据创建一个 Mat 对象。

C++: Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)

我是 C++ 的新手,所以如果我在某个地方犯了基本错误,请记住这一点。基本上我想做的是显示原始视频文件中的图像。为此,我从文件中读取数据并将其分配到内存中。

struct videoFrame{
float frameTime;
unsigned short int year, day, msec;
unsigned char hour, min, sec;
unsigned short int mFrame[SIZE];
};

...

//seek to first frame
vfs.seekg(2560, ios_base::beg);
int pos;
for(pos=0; pos<SIZE;pos++){
vfs.read( (char*) &mVideoFrame1->mFrame[pos], sizeof(short));
}
Mat mImage1( Size(WIDTH, HEIGHT), CV_16UC1, mVideoFrame1->mFrame, HEIGHT * 2);
namedWindow("Frame 1", CV_WINDOW_AUTOSIZE);
imshow("Frame 1", mImage1);
waitKey(0);

我已经能够从文件中读取数据...例如framevideo headerers。我想我可能不清楚构造函数是如何工作的。如果有人可以提供一些见解,那就太好了。当我在 namedWindow 中显示框架时,它是全黑的。

顺便说一下......

const int HEIGHT = 512;
const int WIDTH = 640;
const int SIZE = HEIGHT * WIDTH * 2;

第一帧中的原始数据是 512x640 16bit unsigned little Endian byte order black and white.

最佳答案

step 是等于或大于 sizeof(_PIXELTYPE) * Width 的图像步幅大小。您没有说明您的问题,但我注意到您错误地将步长设置为 2*HEIGHT。否则你的构造函数使用似乎没问题。

编辑:当然,只需使用自动步进即可为您计算默认步幅。

关于c++ - 来自 OpenCV 中用户分配数据的 Mat 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237566/

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