⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dh-ioctl.h

📁 gtk实现的图像采集的示例程序。
💻 H
字号:
/**	调用V4L的接口,参考了xawtv 3.88.**   PengJieJun,2003.7.9*	Copyright大恒图像.*/#ifndef __DH_USER_VID_FUCTION__#define __DH_USER_VID_FUCTION__#include <linux/types.h>		/* XXX glibc */#include "videodev.h"//#include "grab-ng.h"#if defined(__cplusplus) || defined(c_plusplus)extern "C"{#endif	#define VIDEO_SOURCE_COMPOSITE0		0#define VIDEO_SOURCE_COMPOSITE1		1#define VIDEO_SOURCE_COMPOSITE2		2#define VIDEO_SOURCE_SVIDEO		3// h_dhVid: dh_OpenVideo的返回值//return:	-1,函数调用错//			>=0,卡的数目int dh_GetVideoNum(void);//得到当前的错误信息char* dh_GetErrInfo(void);//打开设备//nCardNo:	设备编号,从0开始(与Windows不一样!)//返回值:	不成功,返回-1//	成功,返回设备句柄:>0int dh_OpenVideo(int no);// 关闭设备// h_dhVid: dh_OpenVideo的返回值// 返回值: 不成功,返回-1// 0,成功返回int dh_CloseVideo (int h_dhVid);//return:	-1,函数调用错//			1,有视频//			0,没有视频//h_dhVid:	dh_OpenVideo的返回值int dh_IsVideoOn(int h_dhVid);// 调用该函数采集一帧或一场图像,采集完成后才返回。// 函数成功返回数据指针,否则返回NULL// h_dhVid: dh_OpenVideo的返回值// 调用完毕,数据处理后,记得调用一次dh_MRelease_buf (int h_dhVid)unsigned char *dh_MCaptureOne (int h_dhVid);//调用该函数快速采集一帧或一场图像,采集完成后才返回。//函数成功返回数据指针,否则返回NULL//h_dhVid:	dh_OpenVideo的返回值unsigned char* dh_MFastCaptureOne(int h_dhVid);//调用该函数开始快速采集一帧或一场图像,采集状态由dh_MGetSnapOneStatus()检测。//函数成功返回0,否则返回-1//h_dhVid:	dh_OpenVideo的返回值int dh_MSnapOne(int h_dhVid);//调用该函数来等待采集完一幀或一场.(与Windows不一样!)//函数成功返回数据指针,否则返回NULL//h_dhVid:	dh_OpenVideo的返回值unsigned char* dh_MGetSnapOneStatus(int h_dhVid);//调用函数dh_MGetNextFrame或者dh_MCaptureOne并处理完采集的图像后,//必须调用该函数释放内存.//dh_MFastCaptureOne和dh_MSnapOne不需要调用该函数释放内存.//函数成功返回0,否则返回-1int dh_MReleaseBuf (int h_dhVid);// 发开始采集命令// h_dhVid: dh_OpenVideo的返回值// buffers: 1 ~ 4,使用多少个buf进行采集// 函数成功返回0,否则返回-1int dh_MStartCapture (int h_dhVid, unsigned int buffers);// 发出采集下帧的命令,返回采集完成当前帧的指针// h_dhVid: dh_OpenVideo的返回值// return: 函数成功返回数据指针,否则返回NULL// 调用完毕,数据处理后,记得调用一次dh_MRelease_buf (int h_dhVid)unsigned char *dh_MGetNextFrame (int h_dhVid);	// 发停止采集命令// h_dhVid: dh_OpenVideo的返回值int dh_MStopCapture (int h_dhVid);// 设置采集卡采集到内存的图像大小,颜色模式:(不改变向屏幕采集的图像的颜色属性),坐标是相对于屏幕左上角原点.// h_dhVid: dh_OpenVideo的返回值// int width,int height,图像的宽高,应该满足:// X方向的起点和宽度是4的倍数;// Y方向的起点和宽度是2的倍数。// pallete: valid value are:// VIDEO_NONE           0// VIDEO_RGB08          1  /* bt848 dithered */// VIDEO_GRAY           2// VIDEO_RGB15_LE       3  /* 15 bpp little endian */// VIDEO_RGB16_LE       4  /* 16 bpp little endian */// VIDEO_RGB15_BE       5  /* 15 bpp big endian */// VIDEO_RGB16_BE       6  /* 16 bpp big endian */// VIDEO_BGR24          7  /* bgrbgrbgrbgr (LE) */// VIDEO_BGR32          8  /* bgr-bgr-bgr- (LE) */// VIDEO_RGB24          9  /* rgbrgbrgbrgb (BE) */// VIDEO_RGB32         10  /* -rgb-rgb-rgb (BE) */// VIDEO_LUT2          11  /* lookup-table 2 byte depth */// VIDEO_LUT4          12  /* lookup-table 4 byte depth */// VIDEO_YUYV	    13  /* 4:2:2 */// VIDEO_YUV422P       14  /* YUV 4:2:2 (planar) */// VIDEO_YUV420P            15  /* YUV 4:2:0 (planar) */// VIDEO_MJPEG      16  /* MJPEG (AVI) */// VIDEO_JPEG       17  /* JPEG (JFIF) */// VIDEO_UYVY	    18  /* 4:2:2 */// VIDEO_FMT_COUNT	    19int dh_MSetCaptureNorm (int h_dhVid, int width, int height, int pallete);//设置亮度//h_dhVid:	dh_OpenVideo的返回值//brightness:	0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetBrightness(int h_dhVid, int brightness);int dh_GetBrightness(int h_dhVid, int *brightness);//设置对比度//h_dhVid:	dh_OpenVideo的返回值//contrast:		0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetContrast(int h_dhVid, int contrast);int dh_GetContrast(int h_dhVid, int *contrast);//设置饱和度//h_dhVid:	dh_OpenVideo的返回值//saturation:	0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetSaturation(int h_dhVid, int saturation);int dh_GetSaturation(int h_dhVid, int *saturation);//设置色调//h_dhVid:	dh_OpenVideo的返回值//hue:	0 ~ 65535,初始值为32767		//函数成功返回0,否则返回-1int dh_SetHue(int h_dhVid, int hue);int dh_GetHue(int h_dhVid, int *hue);//设置视频制式//h_dhVid:      dh_OpenVideo的返回值//norm: int//#define VIDEO_MODE_PAL		0//#define VIDEO_MODE_NTSC		1//#define VIDEO_MODE_SECAM	2//#define VIDEO_MODE_AUTO		3//函数成功返回0,否则返回-1int dh_SetVideoStandard(int h_dhVid, int norm);//得到视频制式,//h_dhVid:      dh_OpenVideo的返回值//norm: 返回的制式号//函数成功返回0,否则返回-1int dh_GetVideoStandard (int h_dhVid, int *norm);//设置输入源路//h_dhVid:	dh_OpenVideo的返回值//channel 源路//valid value are://	#define VIDEO_SOURCE_COMPOSITE0  0//	#define VIDEO_SOURCE_COMPOSITE1	1//	#define VIDEO_SOURCE_COMPOSITE2	2//	#define VIDEO_SOURCE_SVIDEO	3  //函数成功返回0,否则返回-1int dh_SetVideoSource(int h_dhVid, int channel);//得到输入源路//h_dhVid:      dh_OpenVideo的返回值//channel:      返回的源路号//函数成功返回0,否则返回-1int dh_GetVideoSource (int h_dhVid, int *channel);// h_dhVid: dh_OpenVideo的返回值// 开始向屏幕采集// 函数成功返回0,否则返回-1int dh_OStartCapture (int h_dhVid, int width, int height, int top, int left);// 停止向屏幕采集//函数成功返回0,否则返回-1int dh_OStopCapture (int h_dhVid);//additional funtion//视频格式转换函数,p为图像宽高之积(p=width*height)//函数来自color_packed.c和color_yuv2rgb.c,用户可以仿照此从这两个文件中提取别的函数void yuv422_to_rgb24(unsigned char* dest, unsigned char* src,int p);void redblue_swap(unsigned char *dest, unsigned char *src, int p);//new add functions,2003.8.8//让硬件处于快速采集方式状态.只需调用一次即可.//使用限制://限制1,调用该函数前,必须停止其它的采集方式,(向屏幕采集,向内存采集),即该函数只是在//	调用函数dh_MFastCaptureOneField()时才使用.调用该函数后约150毫秒,//	才能调用函数dh_MFastCaptureOneField()采集到稳定的图像.//限制2,使用其它采集方式前(向屏幕采集,向内存采集),必须先调用dh_StartFastCap()关闭快速采集模式.//限制3,在改变采图大小,颜色位数等参数的时候,必须先调用dh_StopFastCap()关闭快速采集,//	等参数设置完成后再调用dh_StartFastCap()//函数返回0,调用成功,//返回-1,调用失败,int dh_StartFastCap(int h_dhVid);//停止硬件快速采集.//函数返回0,调用成功,//返回-1,调用失败,int dh_StopFastCap(int h_dhVid);//外部调用的函数,在快速采集一场图像时调用的函数.//与函数dh_MCaptureOne()的区别://区别1:	函数dh_MCaptureOne()可用于幀和场采集;而函数dh_MFastCaptureOneField()只用于场采集.//区别2:	调用函数前dh_MFastCaptureOneField()前,必须调用过一次函数dh_StartFastCap(),(只需调用一次)//	调用dh_MCaptureOne()则无此限制.//区别3:调用函数dh_MFastCaptureOneField()可以在20~40毫秒内采集到一场图像;//	函数dh_MCaptureOne()可以在40~60毫秒内采集到一场图像;在60~80毫秒内采集到一幀图像;//函数返回0,调用成功,//返回-1,调用失败,unsigned char* dh_MFastCaptureOneField(int h_dhVid);#if defined(__cplusplus) || defined(c_plusplus)}#endif#endif		//end of #define __DH_USER_VID_FUCTION__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -