pwc-wrapper.cpp
上传用户:jeson_zeng
上传日期:2022-04-23
资源大小:1k
文件大小:5k
- #include <stdio.h>
- #include <highgui.h>
- #include "pwc-wrapper.h"
- /*
- * In the following listed are the extended functions you can use
- * with your Philips Webcam (i.e. SPC 900 NC). Details can be found
- * in the header file pwc-wrapper.h or at www.rainsoft.de.
- */
- int PwcWrapper::GetFrameRate(){
- video_window v_win;
- ioctl(cam->deviceHandle, VIDIOCGWIN, &v_win);
- return (v_win.flags & PWC_FPS_FRMASK) >> PWC_FPS_SHIFT;
- }
- void PwcWrapper::SetFrameRate(int fps){
- video_window v_win;
- ioctl(cam->deviceHandle, VIDIOCGWIN, &v_win);
- if (v_win.flags & PWC_FPS_FRMASK) printf("Framerate: %d fps => ", (v_win.flags & PWC_FPS_FRMASK) >> PWC_FPS_SHIFT);
- v_win.flags &= ~PWC_FPS_FRMASK;
- v_win.flags |= (fps << PWC_FPS_SHIFT);
- ioctl(cam->deviceHandle, VIDIOCSWIN, &v_win);
- ioctl(cam->deviceHandle, VIDIOCGWIN, &v_win);
- if (v_win.flags & PWC_FPS_FRMASK) printf("%d fpsn", (v_win.flags & PWC_FPS_FRMASK) >> PWC_FPS_SHIFT);
- }
- void PwcWrapper::SaveUserSettingsToEEPROM(){
- ioctl(cam->deviceHandle, VIDIOCPWCSUSER);
- }
- void PwcWrapper::RestoreUserSettingsFromEEPROM(){
- ioctl(cam->deviceHandle, VIDIOCPWCRUSER);
- }
- void PwcWrapper::ResetEEPROM(){
- ioctl(cam->deviceHandle, VIDIOCPWCFACTORY);
- }
- int PwcWrapper::GetCompressionMode(){
- int mode;
- ioctl(cam->deviceHandle, VIDIOCPWCGCQUAL, &mode);
- return mode;
- }
- void PwcWrapper::SetCompressionMode(int newmode){
- int oldmode;
- ioctl(cam->deviceHandle, VIDIOCPWCGCQUAL, &oldmode);
- ioctl(cam->deviceHandle, VIDIOCPWCSCQUAL, &newmode);
- ioctl(cam->deviceHandle, VIDIOCPWCGCQUAL, &newmode);
- printf("Compression mode: %d => %dn", oldmode, newmode);
- }
- int PwcWrapper::GetAutomaticGainControl(){
- int agc;
- ioctl(cam->deviceHandle, VIDIOCPWCGAGC, &agc);
- return agc;
- }
- void PwcWrapper::SetAutomaticGainControl(int newagc){
- int oldagc;
- ioctl(cam->deviceHandle, VIDIOCPWCGAGC, &oldagc);
- ioctl(cam->deviceHandle, VIDIOCPWCSAGC, &newagc);
- ioctl(cam->deviceHandle, VIDIOCPWCGAGC, &newagc);
- printf("Automatic gain control: %d => %dn", oldagc, newagc);
- }
- void PwcWrapper::SetShutterSpeed(int speed){
- ioctl(cam->deviceHandle,VIDIOCPWCSSHUTTER,&speed);
- printf("Shutter speed: %dn", speed);
- }
- void PwcWrapper::SetWhitebalance(int mode, int red, int blue){
- struct pwc_whitebalance wb;
- ioctl(cam->deviceHandle, VIDIOCPWCGAWB, &wb);
- printf("Old whitebalance: Mode %d, ManRed %d, ManBlue %d, Red %d, Blue %dn",
- wb.mode, wb.manual_red, wb.manual_blue, wb.read_red, wb.read_blue);
- wb.mode = mode;
- wb.manual_red = red;
- wb.manual_blue = blue;
- ioctl(cam->deviceHandle, VIDIOCPWCSAWB, &wb);
- ioctl(cam->deviceHandle, VIDIOCPWCGAWB, &wb);
- printf("New whitebalance: Mode %d, ManRed %d, ManBlue %d, Red %d, Blue %dn",
- wb.mode, wb.manual_red, wb.manual_blue, wb.read_red, wb.read_blue);
- }
- void PwcWrapper::SetAutomaticWhiteBalanceSpeed(int speed, int delay){
- pwc_wb_speed wb;
- ioctl(cam->deviceHandle, VIDIOCPWCGAGC, &wb);
- printf("Old automatic white balance: Speed %d, Delay %dn", wb.control_speed, wb.control_delay);
- wb.control_speed = speed;
- wb.control_delay = delay;
- ioctl(cam->deviceHandle, VIDIOCPWCSAGC, &wb);
- ioctl(cam->deviceHandle, VIDIOCPWCGAGC, &wb);
- printf("New automatic white balance: Speed %d, Delay %dn", wb.control_speed, wb.control_delay);
- }
- void PwcWrapper::SetCameraLED(int on_time, int off_time){
- struct pwc_leds led;
- led.led_on = on_time;
- led.led_off = off_time;
- ioctl(cam->deviceHandle, VIDIOCPWCSLED, &led);
- }
- void PwcWrapper::SetElectronicSharpness(int newvalue){
- int oldvalue;
- ioctl(cam->deviceHandle, VIDIOCPWCGCONTOUR, &oldvalue);
- ioctl(cam->deviceHandle, VIDIOCPWCSCONTOUR, &newvalue);
- ioctl(cam->deviceHandle, VIDIOCPWCGCONTOUR, &newvalue);
- printf("Electronic Sharpness: %d => %dn", oldvalue, newvalue);
- }
- void PwcWrapper::SetBacklightCompensationMode(int newmode){
- int oldmode;
- ioctl(cam->deviceHandle, VIDIOCPWCGBACKLIGHT, &oldmode);
- ioctl(cam->deviceHandle, VIDIOCPWCSBACKLIGHT, &newmode);
- ioctl(cam->deviceHandle, VIDIOCPWCGBACKLIGHT, &newmode);
- printf("Backlight Compensation: %d => %dn", oldmode, newmode);
- }
- void PwcWrapper::SetAntiFlickerMode(int newmode){
- int oldmode;
- ioctl(cam->deviceHandle, VIDIOCPWCGFLICKER, &oldmode);
- ioctl(cam->deviceHandle, VIDIOCPWCSFLICKER, &newmode);
- ioctl(cam->deviceHandle, VIDIOCPWCGFLICKER, &newmode);
- printf("Anti Flicker Mode: %d => %dn", oldmode, newmode);
- }
- void PwcWrapper::SetDynamicNoiseReductionMode(int newmode){
- int oldmode;
- ioctl(cam->deviceHandle, VIDIOCPWCGDYNNOISE, &oldmode);
- ioctl(cam->deviceHandle, VIDIOCPWCSDYNNOISE, &newmode);
- ioctl(cam->deviceHandle, VIDIOCPWCGDYNNOISE, &newmode);
- printf("Dynamic Noise Reduction Mode: %d => %dn", oldmode, newmode);
- }
- void PwcWrapper::PrintRealImageSize(){
- pwc_imagesize isize;
- ioctl(cam->deviceHandle, VIDIOCPWCGREALSIZE, &isize);
- printf("Real image size: %d x %d [Px]n", isize.width, isize.height);
- }