gpt4 book ai didi

c++ - OpenCV Mat::data fwrite 到文件并读取

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:45 26 4
gpt4 key购买 nike

当我尝试写入使用 OpenCV 从相机捕获的图像数据并读出它们时,事情并不正常。我尝试了多种格式,例如 CV_8UC3 和 CV_UC1 灰度图像。

首先,我从相机拍摄了一张图像(640*480)并将数据保存到一个文件

VideoCapture cap(0);

namedWindow("test",0);
namedWindow("gray",0);

FILE *f=fopen("data.txt","wt+");

while(1)
{
Mat frame;
cap>>frame;
imshow("test", frame);

//Mat temp(1, 1, CV_8UC3);
Mat gray;

if(waitKey(30) >= 0)
{
cvtColor(frame, gray, CV_BGR2GRAY);
imshow("gray", gray);
waitKey();
fwrite(gray.data, sizeof(unsigned char), 640*480,f);
break;
}
}

fclose(f);
return 0;

然后在另一个程序中,我尝试像这样读出它们:

FILE *f = fopen("data.txt", "rt");
unsigned char* buffer;
size_t result;
buffer = (unsigned char*)malloc(sizeof(unsigned char)*640*480);

result = fread(buffer, sizeof(unsigned char), 640*480,f);

fclose(f);

Mat image(640, 480, CV_8UC1, buffer);

namedWindow("test", 0);
imshow("test", image);
waitKey();

然后图像出错了。

感谢您的任何建议。

最佳答案

txt 模式不能保存二进制数据。

应该是

FILE *f=fopen("data.txt","wb");

代替:

FILE *f=fopen("data.txt","wt+");  
// btw, what's the + for ? appending does not make any sense here

同样适用于您的读取操作。 (“rb”而不是“rt”)


但是,为什么这一切都是如此?使用内置的东西:

关于c++ - OpenCV Mat::data fwrite 到文件并读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18170136/

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