printf("./app /dev/videoX\n");
return -1;
}
camera_init(argv[1]); //摄像头设备初始化
//开始采集摄像头数据,并编码保存为BMP图片
camera_pthread();
return 0;
}
//YUV转RGB实现
unsigned int Pyuv422torgb32(unsigned char * ptr,unsigned int width,
unsigned int height)
{
unsigned int i, size;
unsigned char Y, Y1, U, V;
unsigned char *buff = ptr; //源数据
unsigned char *output_pt=Pixedata.VideoBuf; //存放转换之后的数据
unsigned char r, g, b;
size = width * height /2;
for (i = size; i > 0; i--)
{
Y = buff[0];
U = buff[1];
Y1= buff[2];
V = buff[3];
buff += 4;
r = R_FROMYV(Y,V);
g = G_FROMYUV(Y,U,V); //b
b = B_FROMYU(Y,U); //v
*output_pt++ = b;
*output_pt++ = g;
*output_pt++ = r;
r = R_FROMYV(Y1,V);
g = G_FROMYUV(Y1,U,V); //b
b = B_FROMYU(Y1,U); //v
*output_pt++ = b;
*output_pt++ = g;
*output_pt++ = r;
}
return 0;
}
//摄像头设备的初始化
int camera_init(char *video)
{
int i=0;
int cnt=0;
//定义摄像头驱动的BUF的功能捕获视频
int iType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
/* 1、打开视频设备 */
iFd = open(video,O_RDWR);
if(iFd < 0)
{
printf("摄像头设备打开失败!\n");
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73