我想处理网络摄像头流。它必须很快,所以我使用RAW格式的图像。在How to capture still image from webcam on linux之后,我制作了一个类似的程序。
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
const int SIZE=320*240;
int main(){
FILE* camera, *output;
camera=fopen("/dev/video0","rb");
output=fopen("image.raw","wb");
float data[SIZE];
fread(data,sizeof(float),SIZE,camera);
float max=FLT_MAX;
for(int i=0;i<SIZE;i++){
data[i]=max-data[i];
}
fwrite(data,sizeof(float),SIZE,output);
fclose(camera);
fclose(output);
return 0;
}
当我省略修改数据的行(data [i] = max-data [i];)时,一切正常,我得到的原始格式的图像与网络摄像头流相对应。但我希望像treshold一样进行简单的处理,然后反转图片的颜色。然而,FLT_MAX似乎不是解决方案,因为应用(data [i] = max-data [i])给了我一个垃圾图像(仍然可以被图像阅读软件读取,但人眼不再能够阅读)。请参阅。因此,我的问题是:描述RAW图片的浮点值的范围是什么
编辑:我尝试了一些思考,我修改了处理图片的行到数据[i] = data [SIZE-i];并得到一个水平镜像图片所以我认为图片格式为每像素1浮点数,仍然没有&#39;知道范围。