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()
EndIf
I also think it may be time to put this project to bed