• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: linux  操作系统  usb  

资源简介

采用的摄像头是现代的,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


评论

共有 条评论