这是我的代码:
f=fopen('m-001-1.raw');
a=fread(f);
input_img = reshape(a,768, 576, 3);
input_img = imrotate(input_img, -90);
imwrite(input_img, 'm-001-1.jpg');
但它没有将图片保存为.jpg
格式,我该如何改进呢?
答案 0 :(得分:0)
这不是一个完美的答案,但评论太长了。然而,它可能是"解决方案"
它可能正在写一个图像而你却没有看到你想要的东西吗? " RAW"的问题格式是它不是一种格式本身,它从相机的字面上原始数据。您似乎知道数据的形状,通过您的" reshape(a,768, 576, 3);
"进行猜测,但您知道它的幅度吗?
通常在原始时你会有二进制数,你需要将它们转换为你的振幅。
假设您的相机是每像素14位相机,那么您需要相应地缩放二进制数。您需要将它们缩放到8位(或其他东西,但matlab可以处理的东西)以进行保存和显示。
更有甚者,有时原始数据甚至不会线性存储! (查看here以获取阅读原始数据的提示),这样您可能会得到错误的图像。 Or maybe the las 4 bits are some kind of encoding! There are different ways of reading and storing RGB images!
所有这些信息都是特定于硬件的,因此我们无法帮助您,因为我们不了解您的硬件。
所以简而言之。您需要大量的信息来阅读和处理原始数据,以及您拥有的信息,我们不会。也许如果你告诉我们你用于原始数据的硬件我们可以提供帮助,但通常是一项过于繁琐的工作,也许没有人会为你做出他/她的一天。
干杯。
PD:一些有趣的链接
Matlab文件交换
Matlab文件交换
http://www.mathworks.com/matlabcentral/fileexchange/29344-read-medical-data-3d
Matlab文件交换
http://www.mathworks.com/matlabcentral/fileexchange/7412-raw-camera-file-reader
PDF机智提示