当前位置: 技术问答>linux和unix
关于视频采集图像显示的问题
来源: 互联网 发布时间:2016-03-26
本文导语: 有没有人知道linux下用摄像头采集的rgb位流图像怎么显示啊,我用的是ov511的摄像头,现在能读出图像数据,但是存为图片文件后不知该怎么显示,试过加bmp头,能看了,但图像还是出不来,是一片花的,另外谁知到...
有没有人知道linux下用摄像头采集的rgb位流图像怎么显示啊,我用的是ov511的摄像头,现在能读出图像数据,但是存为图片文件后不知该怎么显示,试过加bmp头,能看了,但图像还是出不来,是一片花的,另外谁知到这个视频采集时摄像头要做哪些设置,我发现自己采集的数据似乎也有问题,希望知道的能指点一下。
|
你搜索一下spca5xx摄相头驱动官方网站,上边带了个例子,从取数据到压缩成各种格式,到网络视频等都有。很详细。
|
分数太少了哦,不知道你加BMP头对不对,我这里的是RGB24转换成BMP的文件
#pragma pack(1)
#define WIDTHBYTES(i) ((i+31)/32*4)
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
DWORD bfReserved;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // must be 0x28
DWORD biWidth; //
DWORD biHeight; //
WORD biPlanes; // must be 1
WORD biBitCount; //
DWORD biCompression; //
DWORD biSizeImage; //
DWORD biXPelsPerMeter; //
DWORD biYPelsPerMeter; //
DWORD biClrUsed; //
DWORD biClrImportant; //
}BITMAPINFOHEADER;
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
void rgb24_to_bmp(char* filename,uint8_t *rgb24data,int width,int height){
BITMAPFILEHEADER bmpheader;
BITMAPINFO bmpinfo;
FILE *fp;
fp = fopen(filename,"wb");
if(!fp)return;
bmpheader.bfType = ('M'
#pragma pack(1)
#define WIDTHBYTES(i) ((i+31)/32*4)
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
DWORD bfReserved;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // must be 0x28
DWORD biWidth; //
DWORD biHeight; //
WORD biPlanes; // must be 1
WORD biBitCount; //
DWORD biCompression; //
DWORD biSizeImage; //
DWORD biXPelsPerMeter; //
DWORD biYPelsPerMeter; //
DWORD biClrUsed; //
DWORD biClrImportant; //
}BITMAPINFOHEADER;
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
void rgb24_to_bmp(char* filename,uint8_t *rgb24data,int width,int height){
BITMAPFILEHEADER bmpheader;
BITMAPINFO bmpinfo;
FILE *fp;
fp = fopen(filename,"wb");
if(!fp)return;
bmpheader.bfType = ('M'