You Russians and your vodka... I had to do the same thing because of my cheeks - us Canadians and our beer.I had to change the white balance in the web-camera (make my face look green) to prevent tracking of my nose.
Thanks for testing the example.
You Russians and your vodka... I had to do the same thing because of my cheeks - us Canadians and our beer.I had to change the white balance in the web-camera (make my face look green) to prevent tracking of my nose.
Code: Select all
You Russians and your vodka...Code: Select all
IncludeFile "includes/cv_functions.pbi"
Global *capture
Global DefBrightness.d, MaxBrightness.d, MinBrightness.d, DefContrast.d, MaxContrast.d, MinContrast.d
Global DefGamma.d, MaxGamma.d, MinGamma.d, DefSaturation.d, MaxSaturation.d, MinSaturation.d
Global DefHue.d, MaxHue.d, MinHue.d, DefSharpness.d, MaxSharpness.d, MinSharpness.d
Global DefExposure.d, MaxExposure.d, MinExposure.d
#CV_WINDOW_NAME = "WebCam settings"
#CamDataName = "camdata.dat"
Procedure ReadCamData()
  If OpenPreferences(GetCurrentDirectory() + #CamDataName)
    DefBrightness = ReadPreferenceLong("DefBrightness", 1)
    DefContrast =  ReadPreferenceLong("DefContrast", 1)
    DefGamma = ReadPreferenceLong("DefGamma", 1)
    DefSaturation = ReadPreferenceLong("DefSaturation", 1)
    DefHue = ReadPreferenceLong("DefHue", 1)
    DefSharpness = ReadPreferenceLong("DefSharpness", 1)
    DefExposure = ReadPreferenceLong("DefExposure", 1)
    
    MaxBrightness = ReadPreferenceLong("MaxBrightness", 1)
    MaxContrast = ReadPreferenceLong("MaxContrast", 1)
    MaxGamma = ReadPreferenceLong("MaxGamma", 1)
    MaxSaturation = ReadPreferenceLong("MaxSaturation", 1)
    MaxHue = ReadPreferenceLong("MaxHue", 1)
    MaxSharpness = ReadPreferenceLong("MaxSharpness", 1)
    MaxExposure = ReadPreferenceLong("MaxExposure", 1)
    
    MinBrightness = ReadPreferenceLong("MinBrightness", 1)
    MinContrast =  ReadPreferenceLong("MinContrast", 1)
    MinGamma = ReadPreferenceLong("MinGamma", 1)
    MinSaturation = ReadPreferenceLong("MinSaturation", 1)
    MinHue = ReadPreferenceLong("MinHue", 1)
    MinSharpness = ReadPreferenceLong("MinSharpness", 1)
    MinExposure = ReadPreferenceLong("MinExposure", 1)    
    
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS, DefBrightness)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST, DefContrast)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_GAMMA, DefGamma)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_SATURATION, DefSaturation)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_HUE, DefHue)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_SHARPNESS, DefSharpness)
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_EXPOSURE, DefExposure
  Else    
    CreatePreferences(GetCurrentDirectory()+"camdata.dat")
    retvalue.d = 0
    value.d = 0
    DefValue.d
    
    OpenWindow(1, 0, 0, 200, 100, "WebCam's parameters", #PB_Window_ScreenCentered)
    TextGadget(30, 10,  40, 180, 20, "Testing webcam's parameters...",#PB_Text_Center)
    
;{ #CV_CAP_PROP_BRIGHTNESS    
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_BRIGHTNESS)
    WritePreferenceLong("DefBrightness", DefValue)
    DefBrightness = DefValue
    For k=DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS)     
      If value > retvalue
        Break
      EndIf
    Next      
    WritePreferenceLong("MaxBrightness", cvGetCaptureProperty(*capture,#CV_CAP_PROP_BRIGHTNESS))    
    MaxBrightness = retvalue
    For k=DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS)     
      If value > retvalue
        Break
      EndIf
    Next 
    WritePreferenceLong("MinBrightness", cvGetCaptureProperty(*capture,#CV_CAP_PROP_BRIGHTNESS))
    MinBrightness = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_BRIGHTNESS, DefValue)    
;}    
    
;{ #CV_CAP_PROP_CONTRAST
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_CONTRAST)  
    WritePreferenceLong("DefContrast", DefValue)
    DefContrast = DefValue
    For k=DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST)     
      If value > retvalue
        Break
      EndIf
    Next    
    WritePreferenceLong("MaxContrast", cvGetCaptureProperty(*capture,#CV_CAP_PROP_CONTRAST))
    MaxContrast = retvalue
    For k=DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST)     
      If value < retvalue
        Break
      EndIf
    Next    
    WritePreferenceLong("MinContrast", cvGetCaptureProperty(*capture,#CV_CAP_PROP_CONTRAST))
    MinContrast = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_CONTRAST, DefValue)
;}    
    
;{ #CV_CAP_PROP_GAMMA   
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA)
    WritePreferenceLong("DefGamma", DefValue)
    DefGamma = DefValue
    For k = DefValue To 1000 Step 5
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_GAMMA)     
      If value > retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MaxGamma", cvGetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA))
    MaxGamma = retvalue    
    For k = DefValue To 0 Step -5
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA, value)   
      retvalue=cvGetCaptureProperty(*capture, #CV_CAP_PROP_GAMMA)     
      If value < retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MinGamma", cvGetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA)) 
    MinGamma = retvalue 
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_GAMMA, DefValue)
;}    
    
;{  #CV_CAP_PROP_SATURATION  
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION)
    WritePreferenceLong("DefSaturation", DefValue)
    DefSaturation = DefValue
    For k = DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_SATURATION)
      If value > retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MaxSaturation" , cvGetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION))
    MaxSaturation = retvalue
    For k = DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_SATURATION)     
      If value < retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MinSaturation", cvGetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION)) 
    MinSaturation = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_SATURATION, DefValue)
;}    
    
;{  #CV_CAP_PROP_HUE  
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_HUE)
    WritePreferenceLong("DefHue", DefValue)
    DefHue = DefValue
    For k = DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_HUE, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_HUE)
      If value > retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MaxHue", cvGetCaptureProperty(*capture,#CV_CAP_PROP_HUE))
    MaxHue = retvalue
    For k = DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_HUE, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_HUE)
      If value < retvalue
        Break
      EndIf     
    Next
    WritePreferenceLong("MinHue", cvGetCaptureProperty(*capture,#CV_CAP_PROP_HUE)) 
    MinHue = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_HUE, DefValue)
;}    
          
;{  #CV_CAP_PROP_SHARPNESS 
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS)
    WritePreferenceLong("DefSharpness", DefValue)
    DefSharpness = DefValue
    For k = DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_SHARPNESS)
      If value > retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MaxSharpness", cvGetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS)) 
    MaxSharpness = retvalue
    For k = DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_SHARPNESS)
      If value < retvalue
        Break
      EndIf     
    Next
    WritePreferenceLong("MinSharpness", cvGetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS))
    MinSharpness = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_SHARPNESS, DefValue)
;}    
;{  #CV_CAP_PROP_EXPOSURE
    DefValue = cvGetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE)
    WritePreferenceLong("DefExposure", DefValue)
    DefExposure = DefValue
    For k = DefValue To 1000 Step 1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_EXPOSURE)
      If value > retvalue
        Break
      EndIf      
    Next
    WritePreferenceLong("MaxExposure", cvGetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE))
    MaxExposure = retvalue
    For k = DefValue To 0 Step -1
      value = k
      cvSetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE, value)   
      retvalue = cvGetCaptureProperty(*capture, #CV_CAP_PROP_EXPOSURE)
      If value < retvalue
        Break
      EndIf     
    Next
    WritePreferenceLong("MinExposure", cvGetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE))
    MinExposure = retvalue
    cvSetCaptureProperty(*capture, #CV_CAP_PROP_EXPOSURE, DefValue)
    CloseWindow(1)
;}    
  EndIf  
EndProcedure
Procedure Spin20Handler()
  Shared window_handle  
  val.d = GetGadgetState(20)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_BRIGHTNESS, val) 
  WritePreferenceLong("DefBrightness", val)
EndProcedure
Procedure Spin21Handler()
  Shared window_handle  
  val.d = GetGadgetState(21)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_CONTRAST, val) 
  WritePreferenceLong("DefContrast", val)  
EndProcedure
Procedure Spin22Handler()
  Shared window_handle  
  val.d = GetGadgetState(22)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_GAMMA, val)
  WritePreferenceLong("DefGamma", val)
EndProcedure
Procedure Spin23Handler()
  Shared window_handle  
  val.d = GetGadgetState(23)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_SATURATION, val)
  WritePreferenceLong("DefSaturation", val)
EndProcedure
Procedure Spin24Handler() 
  Shared window_handle  
  val.d = GetGadgetState(24)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_HUE, val)
  WritePreferenceLong("DefHue", val)
EndProcedure
Procedure Spin25Handler() 
  Shared window_handle  
  val.d = GetGadgetState(25)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_SHARPNESS, val)
  WritePreferenceLong("DefSharpness", val)
EndProcedure
Procedure Spin26Handler()
  Shared window_handle  
  val.d = GetGadgetState(26)
  cvSetCaptureProperty(*capture,#CV_CAP_PROP_EXPOSURE, val)
  WritePreferenceLong("DefExposure", val)
EndProcedure
Repeat
  nCreate + 1
  *capture = cvCreateCameraCapture(0)
  Delay(500)
Until nCreate = 5 Or *capture
If *capture
      
  *image.IplImage
  *edges.IplImage
  cvNamedWindow(#CV_WINDOW_NAME, #CV_WINDOW_NORMAL)
  cvMoveWindow(#CV_WINDOW_NAME, -1000, -1000)
  cvResizeWindow(#CV_WINDOW_NAME, 640, 480)  
  window_handle = cvGetWindowHandle(#CV_WINDOW_NAME)
  hWnd = GetParent_(window_handle)
  ShowWindow_(hWnd, #SW_HIDE)
  
  ReadCamData()    
  cvSetCaptureProperty(*capture, #CV_CAP_PROP_FRAME_WIDTH, 640)
  cvSetCaptureProperty(*capture, #CV_CAP_PROP_FRAME_HEIGHT, 480)
  
  If OpenWindow(0, 0, 0, 800, 480, #CV_WINDOW_NAME, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    SetParent_(window_handle, WindowID(0))     
    TextGadget(10, 650, 25, 60, 20, "Brightness:", #PB_Text_Right)
    TextGadget(11, 650, 50, 60, 20, "Contrast:", #PB_Text_Right)
    TextGadget(12, 650, 75, 60, 20, "Gamma:", #PB_Text_Right)
    TextGadget(13, 650, 100, 60, 20, "Saturation:", #PB_Text_Right)
    TextGadget(14, 650, 125, 60, 20, "Hue:", #PB_Text_Right)
    TextGadget(15, 650, 150, 60, 20, "Sharpness:", #PB_Text_Right)
    TextGadget(16, 650, 175, 60, 20, "Exposure:", #PB_Text_Right)
          
    SpinGadget(20, 715, 20, 50, 20, MinBrightness, MaxBrightness, #PB_Spin_Numeric) : SetGadgetState(20, DefBrightness)
    SpinGadget(21, 715, 45, 50, 20, MinContrast, MaxContrast, #PB_Spin_Numeric) : SetGadgetState(21, DefContrast)
    SpinGadget(22, 715, 70, 50, 20, MinGamma, MaxGamma, #PB_Spin_Numeric) : SetGadgetState(22, DefGamma)
    SpinGadget(23, 715, 95, 50, 20, MinSaturation, MaxSaturation, #PB_Spin_Numeric) : SetGadgetState(23, DefSaturation)
    SpinGadget(24, 715, 120, 50, 20, MinHue, MaxHue, #PB_Spin_Numeric) : SetGadgetState(24, DefHue)
    SpinGadget(25, 715, 145, 50, 20, MinSharpness, MaxSharpness, #PB_Spin_Numeric) : SetGadgetState(25, DefSharpness)
    SpinGadget(26, 715, 170, 50, 20, MinExposure, MaxExposure, #PB_Spin_Numeric) : SetGadgetState(26, DefExposure)
       
    BindGadgetEvent(20, @Spin20Handler())
    BindGadgetEvent(21, @Spin21Handler())
    BindGadgetEvent(22, @Spin22Handler())
    BindGadgetEvent(23, @Spin23Handler())
    BindGadgetEvent(24, @Spin24Handler())
    BindGadgetEvent(25, @Spin25Handler())
    BindGadgetEvent(26, @Spin26Handler())
        
    Repeat
      *image = cvQueryFrame(*capture)
      If *image
        cvShowImage(#CV_WINDOW_NAME, *image)        
        cvWaitKey(1)
      EndIf
    Until WindowEvent() = #PB_Event_CloseWindow
  EndIf
  cvDestroyWindow(#CV_WINDOW_NAME)
  cvReleaseCapture(@*capture)
  cvReleaseImage(@*image)
  ClosePreferences()
EndIfI also think it may be time to put this project to bed
