亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gtk_cam.c

?? gtk實現的圖像采集的示例程序。
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <strings.h>#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/ioctl.h>#include <time.h>#include <gtk/gtk.h>#include <errno.h>#include <stdlib.h>#include "grab-ng.h"#include "dh-ioctl.h"//#define __YUV422_CAP__    //采用YUV格式采集int TOP = 0, LEFT = 0; //窗體起始坐標int COLS = 768, ROWS = 288;  //采集窗體的大小int frame = 0;int send_num = 0;int bt8x8_handle = 0; //設備句柄unsigned char *card0_buf = NULL;  //硬件采集到的原始圖像數據指針unsigned char *card0_dest_buf = NULL; //經過格式轉換后的圖像數據指針char title[256];int g_err_num = 0;int global_frames = 0;  //用來計算FPSint capture_flag = 0;  //preview采集控制參數int overlay_flag = 0; //overlay采集控制參數int b_current = 0, c_current = 0, s_current = 0, h_current = 0; //用來存取圖像亮度對比度等參數GtkObject *b_adj, *c_adj, *s_adj, *h_adj;time_t stTime;GtkWidget *main_win;GtkWidget *status;GtkWidget *darea;GtkWidget *label;gdouble gtk_adjustment_get_value (GtkAdjustment * adjustment);int send_expose (void);void on_darea_expose (GtkWidget * widget);gint configure_event (GtkWidget * widget);static void overlay_display (void);//打開設備void open_dev (void){	int rc;	card0_dest_buf = (unsigned char *) malloc (768 * 576 * 3); //申請存放處理后圖像數據的內存空間	bt8x8_handle = dh_OpenVideo (0); //打開設備	if (bt8x8_handle < 0)	{		printf (dh_GetErrInfo ());		free (card0_dest_buf);		exit (-1);	}#ifdef	__YUV422_CAP__	rc = dh_MSetCaptureNorm (bt8x8_handle, COLS, ROWS, VIDEO_YUYV); //YUV格式采集#else	rc = dh_MSetCaptureNorm (bt8x8_handle, COLS, ROWS, VIDEO_BGR24); //BGR格式采集#endif	if (rc < 0)	{		printf (dh_GetErrInfo ());	}	if (dh_SetVideoSource (bt8x8_handle, VIDEO_SOURCE_COMPOSITE0) < 0)	//設置源路為復合視頻1	{		printf (dh_GetErrInfo ());	}	if (dh_SetVideoStandard (bt8x8_handle, VIDEO_MODE_PAL) < 0)	//設置源路制式為PAL制	{		printf (dh_GetErrInfo ());	}//default value	dh_SetBrightness (bt8x8_handle, 65535 / 2);	dh_SetContrast (bt8x8_handle, 65535 / 2);	dh_SetSaturation (bt8x8_handle, 65535 / 2);	dh_SetHue (bt8x8_handle, 65535 / 2);}/*---------------------------菜單要調用的函數(callback)---------------------------------*///菜單項preview要調用的函數static void preview_display (void){	time (&stTime);	g_err_num = 0;		//采集之前判斷是否有視頻信號輸入	if (!dh_IsVideoOn (bt8x8_handle))	{		printf ("Video source not ready.\n");		return;	}		//如果正在overlay采集,先停止overlay采集	if (overlay_flag)		overlay_display ();		//由capture_flag判斷開始采集還是停止采集	if (capture_flag == 0)	{		capture_flag = 1;		//如果窗體大小變化,每次采集前得重新設置采集參數#ifdef	__YUV422_CAP__		dh_MSetCaptureNorm (bt8x8_handle, COLS, ROWS, VIDEO_YUYV);#else		dh_MSetCaptureNorm (bt8x8_handle, COLS, ROWS, VIDEO_BGR24);#endif		dh_MStartCapture (bt8x8_handle, 4); //發往內存循環采集命令,使用4個緩沖區		gtk_timeout_add (10, (GtkFunction) send_expose, NULL); //每10秒調用一次函數send_expose()	}	else	{		capture_flag = 0;		dh_MStopCapture (bt8x8_handle); //停止往內存循環采集	}}//定時器調用的函數,實現連續采集顯示int send_expose (void){	if (capture_flag == 1)	{		//返回采集完成當前幀的指針,同時發出采集下幀的命令		card0_buf = dh_MGetNextFrame (bt8x8_handle);		if (NULL == card0_buf)		{			printf ("card0_buf is NULL.\n");			//如果采集錯誤,重啟采集			dh_MStopCapture (bt8x8_handle);			dh_MStartCapture (bt8x8_handle, 4);			g_err_num++;		}		else		{			on_darea_expose (darea); //調用此函數實現圖像顯示			//釋放內存,否則循環采集無法進行下去			if (dh_MReleaseBuf (bt8x8_handle) < 0)			{				printf (dh_GetErrInfo ());			}		}	}	return 1;}//菜單項overlay調用的函數:往屏幕采集static voidoverlay_display (void){	int wx, wy;	wx = TOP + 4;	wy = LEFT + 56;		//采集之前判斷是否有視頻信號輸入	if (!dh_IsVideoOn (bt8x8_handle))	{		printf ("Video source not ready.\n");		return;	}		gtk_widget_set_uposition (main_win, TOP, LEFT);	if (overlay_flag == 0)	{		//如果正在preview采集,先停下來		if(capture_flag)		{			capture_flag = 0;			dh_MStopCapture (bt8x8_handle);		}				//開始overlay采集		dh_OStartCapture (bt8x8_handle, COLS, ROWS, wx, wy);		overlay_flag = 1;	}	else	{			//停止overlay采集		dh_OStopCapture (bt8x8_handle);		overlay_flag = 0;	}}//菜單項grab調用的的函數抓單幀static void grab_one_display (void){	int i;	time (&stTime);	g_err_num = 0;		//如果正在preview采集,先停下來	if (capture_flag == 1)		preview_display ();	//stop capture	//如果正在overlay采集,先停下來	if (overlay_flag)		overlay_display ();	//采集之前判斷是否有視頻信號輸入	if (!dh_IsVideoOn (bt8x8_handle))	{		printf ("Video source not ready.\n");		return;	}//for(;;)      //死循環抓單幀采集,用來測試性能	{				card0_buf = dh_MCaptureOne (bt8x8_handle);  //正常抓單幀或單場采集,FPS最高8幀/秒		//card0_buf = dh_MFastCaptureOne(bt8x8_handle);   //快速抓單幀或單場采集,FPS可達到16幀/秒				//dh_MSnapOne(bt8x8_handle);		//card0_buf = dh_MGetSnapOneStatus(bt8x8_handle);				if (NULL == card0_buf)		{			printf (dh_GetErrInfo ());			g_err_num++;		}		else		{			on_darea_expose (darea);   //調用此函數實現圖像顯示									//釋放內存,否則循環采集無法進行下去,如果是快速采集則無需調用此函數			if (dh_MReleaseBuf (bt8x8_handle) < 0)			{				printf (dh_GetErrInfo ());			}		}	}	gtk_statusbar_push (GTK_STATUSBAR (status), 1, "Grab a picture");	g_message ("Grab a picture!\n");}//此函數用來顯示圖像和計算FPSvoid on_darea_expose (GtkWidget * widget){	static time_t init, end;	static int frames;	if (!frames)	{		time (&init);	}	if (!card0_buf)	{		return;	}	gdk_threads_enter ();		//轉換成24位RGB#ifdef __YUV422_CAP__	yuv422_to_rgb24 (card0_dest_buf, card0_buf, COLS * ROWS);#else	redblue_swap (card0_dest_buf, card0_buf, COLS * ROWS);#endif	//顯示圖像	gdk_draw_rgb_image (widget->window, widget->style->white_gc, 0, 0,			    COLS, ROWS, GDK_RGB_DITHER_NORMAL,			    card0_dest_buf, COLS * 3);	gdk_threads_leave ();	frames++;	time (&end);	if (end - init >= 1)	{		global_frames = frames;		frames = 0;		sprintf (title, "RTime=%d,FPS %d,Err=%d",			 (int) (end - stTime), global_frames, g_err_num);		gtk_statusbar_push (GTK_STATUSBAR (status), 1, title);		fprintf (stderr, "%s\n", title);	}}//退出程序static void exit_program (void){	int rc = 0;	capture_flag = 0;	//退出程序前先釋放buf	if (NULL != card0_buf)	{		rc = dh_MReleaseBuf (bt8x8_handle);		if (rc == 0)			card0_buf = NULL;	}	free (card0_dest_buf);	dh_CloseVideo (bt8x8_handle);//關閉設備句柄	gtk_main_quit ();}//菜單項option->SourceInput調用下列函數static void set_ch_video0 (){	dh_SetVideoSource (bt8x8_handle, VIDEO_SOURCE_COMPOSITE0);	g_message ("use VIDEO_SOURCE_COMPOSITE0.\n");}static voidset_ch_video1 (void){	dh_SetVideoSource (bt8x8_handle, VIDEO_SOURCE_COMPOSITE1);	g_message ("use VIDEO_SOURCE_COMPOSITE1.\n");}static voidset_ch_video2 (void){	dh_SetVideoSource (bt8x8_handle, VIDEO_SOURCE_COMPOSITE2);	g_message ("use VIDEO_SOURCE_COMPOSITE2.\n");}static voidset_ch_video3 (void){	dh_SetVideoSource (bt8x8_handle, VIDEO_SOURCE_SVIDEO);	g_message ("use VIDEO_SOURCE_SVIDEO.\n");}//菜單項option->SourceNorm調用下列函數static voidset_norm_pal (void){	dh_SetVideoStandard (bt8x8_handle, VIDEO_MODE_PAL);	g_message ("change source norm to PAL.\n");}static voidset_norm_ntsc (void){	dh_SetVideoStandard (bt8x8_handle, VIDEO_MODE_NTSC);	g_message ("change source norm to NTSC.\n");}static voidset_norm_secam (void){	dh_SetVideoStandard (bt8x8_handle, VIDEO_MODE_SECAM);	g_message ("change source norm to SECAM.\n");}static voidclick_ok (GtkWidget * widget, gpointer window){	dh_GetBrightness (bt8x8_handle, &b_current);	dh_GetContrast (bt8x8_handle, &c_current);	dh_GetSaturation (bt8x8_handle, &s_current);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女在线国产| 中文av字幕一区| 一本久久a久久精品亚洲| 国产一区二区三区黄视频| 青青草国产成人99久久| 蜜桃精品视频在线观看| 日韩国产精品久久久久久亚洲| 亚洲高清免费观看高清完整版在线观看| 一区二区三区久久久| 亚洲成人av在线电影| 亚洲大尺度视频在线观看| 亚洲高清在线视频| 日本中文一区二区三区| 久久99热99| 国产91精品一区二区麻豆网站 | 在线看国产一区| 欧美日韩一区三区| 久久久精品国产免大香伊| 久久中文字幕电影| 中文字幕亚洲不卡| 一区二区高清在线| 久久精品国产**网站演员| 国产成人精品一区二| 色综合久久88色综合天天免费| 欧美日韩二区三区| 久久久91精品国产一区二区精品| 久久精品视频网| 亚洲国产日韩av| 国产专区综合网| 在线精品视频免费观看| 日韩欧美亚洲国产精品字幕久久久| 欧美精品一区二区三区在线播放| 国产精品久久一卡二卡| 日韩国产一区二| va亚洲va日韩不卡在线观看| 欧美人牲a欧美精品| 久久精品视频在线免费观看| 亚洲乱码国产乱码精品精98午夜| 免费av成人在线| 97国产一区二区| 亚洲欧美另类小说| 国产福利一区二区三区视频在线| 91香蕉视频污| 精品噜噜噜噜久久久久久久久试看 | 亚洲综合视频在线| 亚洲欧美激情插| 免费在线一区观看| 波多野结衣亚洲一区| 欧美一级黄色片| 亚洲第一主播视频| www.亚洲精品| 久久久噜噜噜久久人人看 | 国产一区91精品张津瑜| 日本黄色一区二区| 国产精品国产三级国产aⅴ无密码| 亚洲成人午夜影院| 韩日欧美一区二区三区| 在线观看免费一区| 一区二区中文视频| 国产精一品亚洲二区在线视频| 91麻豆国产在线观看| 精品成人一区二区三区四区| 一区二区三区四区不卡在线| 粉嫩绯色av一区二区在线观看| 日韩精品一区二区在线| 日韩精品电影在线| 欧美日韩一二三区| 亚洲精品国产无天堂网2021 | 91精品国产综合久久久久久久| 国产精品乱人伦| 国产黄色精品网站| 国产亚洲精品aa午夜观看| 精品一区二区在线观看| 日韩一级片网站| 青椒成人免费视频| 欧美一区二区三区在线视频| 亚洲精品成人a在线观看| 99视频一区二区| 欧美激情一区二区| 国产suv精品一区二区6| 国产亚洲制服色| 国产精品白丝jk白祙喷水网站| 日韩欧美激情一区| 免费成人在线视频观看| 欧美成人精品3d动漫h| 裸体健美xxxx欧美裸体表演| 日韩写真欧美这视频| 麻豆精品在线看| 久久久久国产一区二区三区四区| 国产福利视频一区二区三区| 中文字幕的久久| 欧美在线视频全部完| 亚洲成人久久影院| 欧美电影精品一区二区| 国产一区二区成人久久免费影院| 国产精品无人区| 在线观看国产91| 久久99国产精品麻豆| 欧美—级在线免费片| 91猫先生在线| 另类小说一区二区三区| 国产精品三级视频| 91久久一区二区| 九九**精品视频免费播放| 中文字幕精品—区二区四季| 欧美性色综合网| 国产一区二区三区免费播放| 亚洲欧美日韩电影| 精品久久久久久久久久久久久久久| 国产69精品久久777的优势| 一区二区三区四区不卡视频| 精品国产乱码久久久久久蜜臀| av男人天堂一区| 蜜桃91丨九色丨蝌蚪91桃色| 中文字幕一区二区三区视频| 在线播放亚洲一区| 不卡一区在线观看| 麻豆国产精品官网| 玉足女爽爽91| 欧美韩国日本综合| 日韩视频在线你懂得| av在线综合网| 久久99国产精品免费| 一区二区三区影院| 久久精品一区二区三区不卡| 欧美日本在线一区| 99久久er热在这里只有精品66| 秋霞午夜av一区二区三区| 中文字幕av一区 二区| 日韩女优av电影| 欧美日韩一区二区三区在线| 成人黄色777网| 国产精品一二三四五| 青青草97国产精品免费观看 | 国产91精品在线观看| 久久精品国产免费| 日韩激情一二三区| 亚洲不卡av一区二区三区| 亚洲色图制服诱惑| 国产精品久久久久久久久免费相片 | 97se狠狠狠综合亚洲狠狠| 国产精品一区二区黑丝| 男男成人高潮片免费网站| 亚洲欧美另类久久久精品| 欧美国产综合色视频| 亚洲国产精品成人综合| 久久婷婷成人综合色| 91精品国产综合久久福利| 678五月天丁香亚洲综合网| 欧美性xxxxxx少妇| 色八戒一区二区三区| 91麻豆国产福利在线观看| 99久久精品免费看国产| eeuss鲁片一区二区三区| 成人免费毛片嘿嘿连载视频| 高清久久久久久| 菠萝蜜视频在线观看一区| 成人a级免费电影| 99久久99精品久久久久久| 91啪九色porn原创视频在线观看| 91在线丨porny丨国产| 91美女蜜桃在线| 欧美日韩成人在线一区| 91精品国产综合久久精品性色| 69堂亚洲精品首页| 91精品国产欧美一区二区成人| 欧美日韩成人综合在线一区二区| 91麻豆精品国产综合久久久久久| 欧美精品色综合| 久久影视一区二区| 国产精品国产三级国产| 亚洲国产日韩综合久久精品| 日本在线不卡一区| 国产精品羞羞答答xxdd| 99久久婷婷国产综合精品 | 粉嫩aⅴ一区二区三区四区 | 国产精品资源网| 成人禁用看黄a在线| 91九色02白丝porn| 欧美一区二区三区白人| 国产情人综合久久777777| 亚洲综合免费观看高清在线观看| 日本亚洲最大的色成网站www| 激情av综合网| 欧美伊人精品成人久久综合97| 欧美一级日韩一级| 成人欧美一区二区三区白人 | 国产精品自在在线| 波波电影院一区二区三区| 在线视频你懂得一区| 欧美一区二区三区四区五区| 久久综合国产精品| 亚洲福中文字幕伊人影院| 韩国女主播一区| 欧美男同性恋视频网站| 亚洲国产精品成人综合色在线婷婷| 午夜影院在线观看欧美| av在线不卡网| 欧美变态tickle挠乳网站| 亚洲欧美成人一区二区三区|