资源简介
采用的摄像头是现代的,uvc免驱动的,如果想改为单usb摄像头的话只需要稍微修改一下就行了,linux内核版本采用的是2.6.30的,其他版本应该也能用
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “fbg.h“
#include
#include
#define CLEAR(x) memset (&(x) 0 sizeof (x))
#define PIC_NUM 100
int width=176 height=144ichoiceflag;
int fd0fd1fd2;
unsigned char *rgb888_buf = NULL;
unsigned char *rgb565_buf = NULL;
static unsigned int n_buffers = 0;
int byte_sizesize;
static unsigned long file_length;
static char * dev_name1 = “/dev/video0“;//摄像头设备名
static char * dev_name2 = “/dev/video1“;//摄像头设备名
struct buffer * buffers1 = NULL;
struct buffer * buffers2 = NULL;
struct buffer {
void * start;
size_t length;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////
int convert_yuv_to_rgb_pixel(int y int u int v)
{
unsigned int pixel32 = 0;
unsigned char *pixel = (unsigned char *)&pixel32;
int r g b;
r = y + (int)((1.370705 * ((float)(v-128))));
g = y - (int)((0.698001 * ((float)(v-128)))) - (int)((0.337633 * ((float)(u-128))));
b = y + (int)((1.732446 * ((float)(u-128))));
if(r > 255) r = 255;
if(g > 255) g = 255;
if(b > 255) b = 255;
if(r < 0) r = 0;
if(g < 0) g = 0;
if(b < 0) b = 0;
pixel[0] = b * 31 / 255;
pixel[1] = r * 31 / 255;
pixel[2] = g * 63 / 255;
return pixel32;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
int convert_yuv_to_rgb_buffer(unsigned char *yuv unsigned char *rgb unsigned int width unsigned int height)
{
unsigned int in out = 0;
unsigned int pixel_16;
unsigned char pixel_24[3];
unsigned int pixel32;
int y0 u y1 v;
for(in = 0; in < width * height * 2; in += 4) {
pixel_16 = yuv[in + 3] << 24 | yuv[in + 2] << 16 | yuv[in + 1] << 8 | yuv[in + 0];
y0 = (pixel_16 & 0x000000ff);
u = (pixel_16 & 0x0000ff00) >> 8;
y1 = (pixel_16 & 0x00ff0000) >> 16;
v = (pixel_16 & 0xff000000) >> 24;
pixel32 = convert_yuv_to_rgb_pixel(y0 u v);
pixel_24[0] = (pixel32 & 0x000000ff);
pixel_24[1] = (pixel32 & 0x0000ff00) >> 8;
pixel_24[2] = (pixel32 & 0x00ff0000) >> 16;
rgb[out++] = pixel_24[0];
rgb[out++] = pixel_24[1];
rgb[out++] = pixel_24[2];
pixel32 = convert_yuv_to_rgb_pixel(y1 u v);
pixel_24[0] = (pixel32 & 0x000000ff);
pixel_24[1] = (pixel32 & 0x0000ff00) >> 8;
pixel_24[2] = (pixel32 & 0x00ff0000) >> 16;
rgb[out++] = pixel_24[0];
rgb[out++] = pixel_24[1];
rgb[out++] = pixel_24[2];
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void convert_rgb888_to_rgb565_buffer(unsign
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2423 2011-06-22 10:03 fbg.h
文件 412 2011-06-22 10:03 Makefile
文件 13191 2011-06-22 10:03 v4l2test.c
----------- --------- ---------- ----- ----
16026 3
- 上一篇:mag_one A8 2.0写频教程
- 下一篇:真正的边缘发光shderunity
相关资源
- linux网络编程教学视频
- Linux下聊天系统
- linux压力测试工具stress
- 国密SM4算法ECB CBC源码及demoLinux C版
- ch340usb转串口原理图
- linux基础教程.pdf
- LINUX下传输文件源码
- 基于Linux的消息队列及多线程编程实现
- Linux操作系统实验教程源码.zip
- linux 0.11 bochs2.6.9配置文件
- socketcan提供的linux下的CAN网络工具包
- linux udev源代码
- libv4l-0.6.2-test.tar.gz
- 操作系统课设 Ubuntu下运行读者写者问
- USB接口芯片FT245的FPGA程序
- 计算机操作系统(第四版)汤晓丹著
- makefile的详细说明文档
- HidController1.0.35 USB HID控件 支持 Delp
- 操作系统-银行家算法课设报告及源码
- QT5 下 usb 设备插拔检测
- labview USB通信
- 利用信号进行进程间通信
- Linux中的网络数据包捕获
- 基于QT+Linux的网络聊天室
- LibUsbDotNet 例程
- 银行家算法linux下实现
- linux下哲学家进餐问题实现
- UCloner-10.04.7.tar.gz
- 第七版操作系统概念答案英文
- 计算机操作系统(第三版)[汤子丹
评论
共有 条评论