資源簡介
自己寫的USB攝像頭采集程序,編譯需要用到j(luò)peg庫,驗(yàn)證運(yùn)行OK,和大家分享。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include????????????
#include?????????????
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?????????
#include?
#define?CAMERA_DEVICE?“/dev/video2“
/*#define?CAPTURE_FILE?“usbpic.jpg“??*/
#define?CAPTURE_FILE0?“usbpic0.jpg“
#define?CAPTURE_FILE1?“usbpic1.jpg“
#define?CAPTURE_FILE2?“usbpic2.jpg“
#define?CAPTURE_FILE3?“usbpic3.jpg“
#define?VIDEO_WIDTH?320
#define?VIDEO_HEIGHT?240
#define?VIDEO_FORMAT?V4L2_PIX_FMT_YUYV
#define?BUFFER_COUNT?4
#define?jpegQuality?80
typedef?struct?VideoBuffer?{
????void???*start;
????size_t??length;
}?VideoBuffer;
static?void?YUV422toRGB888(int?width?int?height?unsigned?char?*src?unsigned?char?*dst)
{
??int?line?column;
??unsigned?char?*py?*pu?*pv;
??unsigned?char?*tmp?=?dst;
??/*?In?this?format?each?four?bytes?is?two?pixels.?Each?four?bytes?is?two?Y‘s?a?Cb?and?a?Cr.?
?????Each?Y?goes?to?one?of?the?pixels?and?the?Cb?and?Cr?belong?to?both?pixels.?*/
??py?=?src;
??pu?=?src?+?1;
??pv?=?src?+?3;
???printf(“4\n“);
??#define?CLIP(x)?(?(x)>=0xFF???0xFF?:?(?(x)?<=?0x00???0x00?:?(x)?)?)
???printf(“5\n“);
??for?(line?=?0;?line?????for?(column?=?0;?column???????*tmp++?=?CLIP((double)*py?+?1.402*((double)*pv-128.0));
??????*tmp++?=?CLIP((double)*py?-?0.344*((double)*pu-128.0)?-?0.714*((double)*pv-128.0));??????
??????*tmp++?=?CLIP((double)*py?+?1.772*((double)*pu-128.0));
??????//?increase?py?every?time
??????py?+=?2;
??????//?increase?pupv?every?second?time
??????if?((column?&?1)==1)?{
????????pu?+=?4;
????????pv?+=?4;
??????}
????}
??}
???printf(“6\n“);
}
static?void?jpegWrite(unsigned?char*?img?FILE?*fp)
{
????struct?jpeg_compress_struct?cinfo;
????struct?jpeg_error_mgr?jerr;
????JSAMPROW?row_pointer[1];
??
????if?((NULL==img)?||?(NULL==fp))
????{
????????printf(“jpegWrite:?para?error.\n“);
????????return;
????}
??
????//?create?jpeg?data
????cinfo.err?=?jpeg_std_error(?&jerr?);
????jpeg_create_compress(&cinfo);
????jpeg_stdio_dest(&cinfo?fp);
??
????//?set?image?parameters
????cinfo.image_width?=?VIDEO_WIDTH;
????cinfo.image_height?=?VIDEO_HEIGHT;
????cinfo.input_components?=?3;
????cinfo.in_color_space?=?JCS_RGB;
??
????//?set?jpeg?compression?parameters?to?default
????jpeg_set_defaults(&cinfo);
????//?and?then?adjust?quality?setting
????jpeg_set_quality(&cinfo?jpegQuality?TRUE);
??
????//?start?compress?
????jpeg_start_compress(&cinfo?TRUE);
??
????//?feed?data
????while?(cinfo.next_scanline?????{
????????row_pointer[0]?=?&img[cinfo.next_scanline?*?cinfo.image_width?*??cinfo.input_components];
????????jpeg_write_scanlines(&cinfo?row_pointer?1);
????}
??
?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-08-16?16:50??cameraGrap\
?????文件????????9996??2012-08-16?10:38??cameraGrap\UsbCamPic.c
評(píng)論
共有 條評(píng)論