Prontocam SDK Manual - IPS sipss.co.kr/Data/IPS_Cam_Manual.pdf · Prontocam SDK Manual Prontocam...
Click here to load reader
Transcript of Prontocam SDK Manual - IPS sipss.co.kr/Data/IPS_Cam_Manual.pdf · Prontocam SDK Manual Prontocam...
Prontocam SDKManual
Prontocam SDK Manual
Prontocam SDK Manual IPS SYSTEM CAMERA API MANUAL V1.0
API MANUAL VERSION 1.0
Released November, 2006.
Rm.1417, Daerung Techno Town 8th, 481-11,
Gasan-dong, Keumchun-gu, Seoul, Korea
Tel : 82-2-859-5411 Fax : 82-2-859-5410
2
License Statement
Limited License for Application Manual The demo application of the IMI Tech Camera API(Prontocam) use limited cameras manufactured by IPS system only and my
not be operable with other cameras. Prontocam is fully functional for camera manufactured by IPS system with no restriction.
However restrictions apply for illegal use of the application, modification, reverse and any other act that violates regulation and
the laws concerning the intellectual property.
Please refer to the standard EULA documents for details concerned with API License.
Note IPS system Camera Demo Application (Prontocam) only supports IPS system hardware and strictly forbidden to use or modify
the application for cameras or hardware from other venders. We would appreciate feedback bug report of any kind however, we
can not guarantee satisfactory response
Legal Notice By installing, copying or otherwise using the SOFTWARE, you agree to be bound by the terms of the End User License
Agreements (EULA). The SOFTWARE includes IPS system and IPS system suppliers’ intellectual property. Please read IPS
system and IPS system suppliers’ EULA before installing the SOFTWARE. If you do not accept the terms of the license
agreements, please do not install copy or use this SOFTWARE.
3
Prontocam SDK Manual
1. Introduction.................................................................................................................. 9
1.1. System Requirements............................................................................................................................................. 9
1.2. Installation .......................................................................................................................................................... 10
1.3. Driver Setup ........................................................................................................................................................ 12
2. Getting started............................................................................................................ 15
2.1. Visual Basic ......................................................................................................................................................... 15
2.2. Visual C++ .......................................................................................................................................................... 17
2.3. VB.NET................................................................................................................................................................ 20
2.4. Visual C#............................................................................................................................................................. 22
3. Reference.................................................................................................................... 25
3.1. Properties ............................................................................................................................................................ 25
3.1.1. Acquire....................................................................................................................................................... 27
3.1.2. Asynch ....................................................................................................................................................... 28
3.1.3. AutoExposure ............................................................................................................................................. 29
3.1.4. AutoExposureRef ........................................................................................................................................ 30
3.1.5. BackColor ................................................................................................................................................... 31
3.1.6. Bayer ......................................................................................................................................................... 32
3.1.7. BayerLayout ............................................................................................................................................... 33
3.1.8. BitShift ....................................................................................................................................................... 34
3.1.9. Brightness .................................................................................................................................................. 35
3.1.10. BrightnessControl........................................................................................................................................ 36
3.1.11. Camera ...................................................................................................................................................... 37
3.1.12. Display ....................................................................................................................................................... 38
3.1.13. Edge .......................................................................................................................................................... 39
3.1.14. Flip ............................................................................................................................................................ 40
3.1.15. Focus ......................................................................................................................................................... 41
3.1.16. FocusControl .............................................................................................................................................. 42
3.1.17. Gain........................................................................................................................................................... 43
4
3.1.18. GainControl ................................................................................................................................................ 44
3.1.19. Hue............................................................................................................................................................ 45
3.1.20. HueControl ................................................................................................................................................. 46
3.1.21. Gamma ...................................................................................................................................................... 47
3.1.22. GammaControl............................................................................................................................................ 48
3.1.23. Iris............................................................................................................................................................. 49
3.1.24. IrisControl .................................................................................................................................................. 50
3.1.25. Magnification .............................................................................................................................................. 51
3.1.26. Mode ......................................................................................................................................................... 52
3.1.27. Overlay ...................................................................................................................................................... 53
3.1.28. OverlayColor............................................................................................................................................... 54
3.1.29. OverlayFont................................................................................................................................................ 55
3.1.30. PacketSize .................................................................................................................................................. 56
3.1.31. Palette ....................................................................................................................................................... 57
3.1.32. Rate........................................................................................................................................................... 59
3.1.33. Saturation .................................................................................................................................................. 60
3.1.34. SaturationControl........................................................................................................................................ 61
3.1.35. ScrollX........................................................................................................................................................ 62
3.1.36. ScrollY........................................................................................................................................................ 63
3.1.37. Sharpness .................................................................................................................................................. 64
3.1.38. SharpnessControl........................................................................................................................................ 65
3.1.39. Shutter....................................................................................................................................................... 66
3.1.40. ShutterControl ............................................................................................................................................ 67
3.1.41. SizeX.......................................................................................................................................................... 68
3.1.42. SizeY.......................................................................................................................................................... 69
3.1.43. StartX ........................................................................................................................................................ 70
3.1.44. StartY......................................................................................................................................................... 71
3.1.45. Trigger ....................................................................................................................................................... 72
3.1.46. TriggerCounter ........................................................................................................................................... 73
3.1.47. 3.1.47 TriggerMode..................................................................................................................................... 74
3.1.48. TriggerPolarity ............................................................................................................................................ 76
3.1.49. TriggerSource............................................................................................................................................. 77
3.1.50. ScrollBars ................................................................................................................................................... 78
3.1.51. SwapBytes.................................................................................................................................................. 79
3.1.52. WhiteBalanceUB ......................................................................................................................................... 80
3.1.53. WhiteBalanceVR.......................................................................................................................................... 82
3.1.54. WhiteBalanceControl ................................................................................................................................... 84
5
3.1.55. Zoom ......................................................................................................................................................... 85
3.1.56. ZoomControl............................................................................................................................................... 86
3.2. Methods .............................................................................................................................................................. 87
3.2.1. Draw.......................................................................................................................................................... 88
3.2.2. GetBrightnessMin........................................................................................................................................ 89
3.2.3. GetBrightnessMax ....................................................................................................................................... 90
3.2.4. GetBytesPerPixel ......................................................................................................................................... 91
3.2.5. GetCameraList ............................................................................................................................................ 92
3.2.6. GetComponentData..................................................................................................................................... 93
3.2.7. GetComponentLine ..................................................................................................................................... 95
3.2.8. 3.2.8 GetDIB .............................................................................................................................................. 96
3.2.9. GetExposureMin.......................................................................................................................................... 97
3.2.10. GetExposureMax ......................................................................................................................................... 98
3.2.11. GetF7Info................................................................................................................................................... 99
3.2.12. GetFocusMin............................................................................................................................................. 100
3.2.13. GetFocusMax ............................................................................................................................................ 101
3.2.14. GetGainMin............................................................................................................................................... 102
3.2.15. GetGainMax.............................................................................................................................................. 103
3.2.16. GetGammaMin.......................................................................................................................................... 104
3.2.17. GetGammaMax ......................................................................................................................................... 105
3.2.18. GetHeight................................................................................................................................................. 106
3.2.19. GetHueMin ............................................................................................................................................... 107
3.2.20. GetHueMax............................................................................................................................................... 108
3.2.21. GetImageData .......................................................................................................................................... 109
3.2.22. GetImageLine ........................................................................................................................................... 111
3.2.23. GetImagePointer....................................................................................................................................... 113
3.2.24. GetImageWindow ..................................................................................................................................... 115
3.2.25. GetIrisMin ................................................................................................................................................ 117
3.2.26. GetIrisMax................................................................................................................................................ 118
3.2.27. GetIsoSpeed............................................................................................................................................. 119
3.2.28. GetMaxChannel......................................................................................................................................... 120
3.2.29. GetModeList ............................................................................................................................................. 121
3.2.30. GetPicture ................................................................................................................................................ 122
3.2.31. GetPixel.................................................................................................................................................... 123
3.2.32. GetRateList............................................................................................................................................... 124
3.2.33. GetRawData ............................................................................................................................................. 125
3.2.34. GetRGBPixel ............................................................................................................................................. 127
6
3.2.35. GetSaturationMin ...................................................................................................................................... 128
3.2.36. GetSaturationMax ..................................................................................................................................... 129
3.2.37. GetSharpnessMin ...................................................................................................................................... 130
3.2.38. GetSharpnessMax ..................................................................................................................................... 131
3.2.39. GetShutterMin .......................................................................................................................................... 132
3.2.40. GetShutterMax.......................................................................................................................................... 133
3.2.41. GetSlopeExposure..................................................................................................................................... 134
3.2.42. GetSlopeReset .......................................................................................................................................... 135
3.2.43. GetTriggerInfo.......................................................................................................................................... 136
3.2.44. GetWhiteBalanceMin ................................................................................................................................. 137
3.2.45. GetWhiteBalanceMax................................................................................................................................. 138
3.2.46. GetWidth.................................................................................................................................................. 139
3.2.47. GetZoomMin............................................................................................................................................. 140
3.2.48. GetZoomMax ............................................................................................................................................ 141
3.2.49. Grab ........................................................................................................................................................ 142
3.2.50. LoadChannel............................................................................................................................................. 143
3.2.51. OverlayClear............................................................................................................................................. 144
3.2.52. OverlayEllipse ........................................................................................................................................... 145
3.2.53. OverlayLine .............................................................................................................................................. 146
3.2.54. OverlayPixel.............................................................................................................................................. 147
3.2.55. OverlayRectangle...................................................................................................................................... 148
3.2.56. OverlayText .............................................................................................................................................. 149
3.2.57. SaveImage ............................................................................................................................................... 150
3.2.58. SaveChannel............................................................................................................................................. 151
3.2.59. SetImageWindow...................................................................................................................................... 152
3.2.60. SetIsoSpeed ............................................................................................................................................. 154
3.2.61. SetSlopeExposure ..................................................................................................................................... 155
3.2.62. SetSlopeReset........................................................................................................................................... 157
3.2.63. ShowProperties......................................................................................................................................... 159
3.2.64. SoftTrigger ............................................................................................................................................... 160
3.2.65. StartCapture ............................................................................................................................................. 161
3.2.66. StopCapture ............................................................................................................................................. 163
3.2.67. ReadRegister ............................................................................................................................................ 164
3.2.68. WriteRegister............................................................................................................................................ 165
3.3. Events ............................................................................................................................................................... 166
3.3.1. MouseDblClick .......................................................................................................................................... 167
3.3.2. MouseDown.............................................................................................................................................. 168
7
3.3.3. MouseMove .............................................................................................................................................. 169
3.3.4. MouseUp .................................................................................................................................................. 170
3.3.5. FormatChanged ........................................................................................................................................ 171
3.3.6. FrameAcquired ......................................................................................................................................... 172
3.3.7. FrameAcquiredX ....................................................................................................................................... 173
3.3.8. FrameDropped.......................................................................................................................................... 174
3.3.9. Scroll........................................................................................................................................................ 175
3.3.10. Timeout ................................................................................................................................................... 176
3.4. Property Pages................................................................................................................................................... 177
3.4.1. Source ..................................................................................................................................................... 178
3.4.2. Format ..................................................................................................................................................... 181
3.4.3. Exposure .................................................................................................................................................. 183
3.4.4. Color ........................................................................................................................................................ 184
3.4.5. Advanced ................................................................................................................................................. 185
4. Samples..................................................................................................................... 187
5. TWAIN....................................................................................................................... 188
6. Troubleshooting........................................................................................................ 190
9
1. Introduction Prontocam is an SDK and ActiveX control designed for rapid application development tools, such as Visual Basic, VB.NET,
Visual C++, C#, Java, Delphi, Python, etc. Provided is DcamViewer application allowing customers to operate multiple
cameras and save images in a number of formats. Also included is a TWAIN driver for interfacing to third-party imaging
software. With Prontocam your application immediately supports 1394 digital cameras compliant with DCAM 1.30 and 1.31
specifications.
In general, with Prontocam you can :
Acquire and display live video from one or several 1394 cameras.
Select among multiple camera sources.
Set a desired video format and triggering mode.
Select among several hardware and software trigger sources.
Grab 8-, and 16-bit monochrome images or 24- and 48-bit color images.
Perform automatic color interpolation of a monochrome video generated by Bayer cameras.
Choose among several available frame rates.
Select the desired size and position of the scan area.
Adjust multiple camera parameters in real time: brightness, gain, shutter speed, gamma, sharpness, hue,
saturation.
Control focus, iris, tilt and pan in cameras with motorized lenses.
Activate automatic or one-push control over selected camera parameters, such as exposure and white balance.
Save camera settings in memory channels and reload them on demand.
Control non-standard camera features by direct access to 1394 registers.
Choose among several palettes for pseudo-color display.
Choose between synchronous and asynchronous acquisition modes.
Get an instant access to pixel values and pixel arrays.
Retrieve individual color planes from RGB images.
Import live video to a PictureBox object.
Perform image processing on captured frames and display processed video in real-time.
Save images in BMP, TIF and JPEG formats with adjustable compression.
Perform time-lapse capture to an AVI file or series of images.
Interface to third-party imaging applications using the included TWAIN driver.
Prontocam uses multiple threads to support video acquisition, therefore it does not require separate components for thread
management. This document gives a detailed description of Prontocam, its properties and methods; it also explains
how to use the Prontocam objects to perform the most common tasks.
1.1. System Requirements Hardware requirements:
· Pentium II 400 MHz or better CPU recommended.
· 64 Mb or more RAM recommended.
· A graphic card supporting 65535 colors or higher.
· One or more FireWire (1394) boards or FireWire PCMCIA notebook card installed on the system.
· One or more DCAM-compatible 1394 cameras connected to the system.
Note - Prontocam only supports the cameras that comply with IIDC 1394-based Digital Camera Specification v 1.30. DV
camcorders and some other cameras that have the 1394 (FireWire) physical interface, but are not DCAM-compliant will not
be recognized by Prontocam. Software requirements: · Windows 98/2000/XP .NET FrameWork (for .NET compatibility)
10
t
1.2. Installation To install Pron ocam, perform the following steps:
① Save and exit out of all currently running applications.
② Insert Prontocam CD into the CD-ROM drive. The setup program should start automatically.
The Windows Installer box with a status bar will appear while setup prepares to start the installation process.
③ After the setup program has verified your system has the appropriate installer files, you are ready to start
installing Prontocam. The Welcome dialog box will appear. After reading the preliminary information, click
Next.
④ The License Agreement dialog box will appear. To accept the license and continue, click I Agree, and then
click Next. Note that the Next button is not available until you click I Agree. If you do not accept the license,
click I Do Not Agree, and setup will terminate.
⑤ User Information window will appear, type your informations and the serial “ips”, then Next click.
⑥ The Select Installation Folder dialog box will appear. The dafault location of Prontocam files is C:₩Program
Files₩IPSCam. If you want to change the location, enter the path for the desired folder and then click Next.
⑦ When Confirm Installation dialog box appears, click Next. Prontocam will begin installing on your system.
⑧ Once installation is finished, the Installation Complete dialog box will appear. Click Close to exit the installer.
Note that depending on your operation system you might need to reboot your system at this point. You will be
prompted if a reboot is required; if a message appears, follow the on-screen instructions.
⑨ If you are installing Prontocam on Windows XP SP2 system, it is recommended to apply the following hotfix from
Microsoft:
http://support.microsoft.com/kb/885222
⑩ Continue with 1394 driver setup.
11
1.3. Driver Setup Driver setup
In order for Prontocam to recognize 1394 digital cameras that are connected to your system, the 1394 Digital Camera
Driver must be installed for each camera. This chapter explains how to install the 1394 digital camera drivers in your system
under the Windows 98/2000/Windows XP operating system. If your 1394 camera comes with its own DCAM-compatible
system software, do not use it, as it will not be compatible with Prontocam .
To install the 1394 Digital Camera Driver, perform the following steps:
① Make sure Prontocam is installed on your system.
② Connect your camera to the 1394 (FireWire) port. If no driver was previously installed for the camera, the
Found New Hardware dialog will appear as shown below. .
If the dialog does not show up, proceed to section 4
③ Choose not to connect to Windows Update and click Next. On the next dialog select Install the software
automatically. Ignore the warning message that the driver is not signed up with Microsoft and click Continue
Anyway.
④ Click Finish to complete the installation of the 1394 Digital Camera driver for the selected camera. Verify that
your camera is now listed in the device manager as IPS Digital Camera :
12
13
⑤ If the New Hardware Found dialog didn't appear after you connected your camera, right click on My Computer
and click Properties. Select the Hardware tab and click Device Manager . If there is no compatible driver
installed, your camera will appear in the device list as a Generic 1394 Camera with a question or exclamation
mark next to it:
If the system already has a compatible third party driver installed, the camera will appear under Imaging
Devices with the third party driver's name next to it:
In order for the camera to work properly with Prontocam software, its driver must be changed to the IPS Digital
Camera Driver.
⑥ Right click on your device and select Properties . Choose the Driver tab and then click Update Driver .
⑦ Select either Display a list of the known drivers for this device so that I can choose a specific driver
(Windows 2000) or Install from a list or specific location (Windows XP) and click Next .Then select Don't
search, I will choose the driver to install and click Next . On the next dialog, click Have disk :
⑧ Provide the path to IPS Digital Camera Driver folder where 1394Dcam.inf is located (typically C:₩Program
Files₩IPSCam₩Driver).Click OK :
⑨ From the list of the drivers select IPS Digi al Camera and click Next . Ignore the warning message that the
driver is not signed up with Microsoft:
t
⑩ Click Finish to complete the installation of the IPS Digital Camera driver for the selected camera.Verify that your
camera is now listed in the device manager as IPS Digital Camera.
The driver installation is now complete. You might need to restart the system for the changes to come into effect.
Note - Prontocam supports only the cameras that comply with IIDC 1394-based Digital Camera Specification. DV
camcorders and some other cameras that have the 1394 (FireWire) physical interface, but are not DCAM-compliant will not
be recognized by Prontocam.
Note - the Prontocam installation package includes version 6.2 of the CMU 1394 Digital Camera driver. Starting from version
6.3 the CMU driver is distributed under the terms of the GNU Lesser General Public License.
14
2. Getting started This chapter describes how to create a simple application with Prontocam control using various development platforms.
Visual Basic
Visual C++
VB.NET
Visual C#
2.1. Visual Basic This chapter shows you how to get started with Prontocam control in VB 6.0. With just a few mouse clicks and one line of
code, you will be able to display a live video image in your Visual Basic program and report a value of a selected pixel in
real time.
. Creating the Project
Assuming that you have already run the Prontocam installation program and started Visual Basic, the next step is to create
a project. Begin by selecting the New Project command from the file menu, and select Standard EXE as your project type.
Then use the Project / Components... command and select Prontocam Control from the list. You will see Prontocam icon
appear at the bottom of the toolbox:
Creating the Control
Click the Prontocam icon in the Toolbox and draw a rectangular area on the form. A rectangle with the text "Prontocam
Control" will apear on the form, and the Project window on the right will display Prontocam's properties.
Selecting the Camera
In the properties window, click the Camera property. The list box will display all DCAM-compatible 1394 cameras
conntected to your system. Select the one you intend to use:
15
Selecting the Video Mode
In the properties window, click the Mode property. The list box will display all the video modes provided by the selected
camera. Choose the one you intend to use:
Activating continuous acquisition
In the properties window, click the Acquire property and set it to "On". If the selected camera is connected to the board,
the live video will appear on the form in the Prontocam control's window.
Adding a label
Click the label icon on the toolbox and draw a small rectangular area on the form outside of the Prontocam window. A label
Label 1 will appear on the form.
Adding the FrameAcquired event
Double-click in the control window. The code window will appear with the empty FrameAcquired subroutine in it. It is now
arlier:
rivate Sub Prontocam1_FrameAcquired()
e added to the code
Running the application
You are now ready to hit F5 and watch your program display a live video and report a real-time pixel
value in the coordinates x = 64, y = 32.
time to enter the single line of code mentioned e
P
'the following line needs to b
Label1.Caption = Prontocam1.GetPixel (64, 32)
End Sub
16
2.2. Visual C++ This chapter shows you how to get started with Prontocam control in Visual C++. With just a few mouse clicks and a few
lines of code, you will be able to display a live video image in your C++ program and report a value of a pixel pointed by a
mouse cursor in real time.
. Creating the Project
VC++ 6.0
In the development environment select the New command from the file menu, and then select Projects/MFC
AppWizard.exe . In the Project name field on the right type the name of your application, for instance MyProntocam and
click OK . When MFC AppWizard appears, select Dialog based radio button and click Finish . The project will be created, and
the program dialog MyProntocam will be displayed for editing.
VC++ 7.0 (.NET)
In the .NET development environment select New -> Project. The New Project Dialog box will appear. Select Visual C++
projects on the left and MFC Application on the right. In the Name filed below type the name of your application, for
instance MyProntocam and click OK . When MFC Application Wizard appears, click Application Type , select Dialog based
radio button and click Finish . The project will be created, and the program dialog MyProntocam will be displayed for editing.
Creating the Control
17
r Right click in the dialog and select Inse t ActiveX control from a shortcut menu. From the list of controls select Prontocam
class and press OK . A white rectangle with the text "Prontocam Control" will appear on the dialog.
Generating the class for the Control
VC++ 6.0
Right click in the dialog and select Class Wizard from the shortcut menu. When MFC Class Wizard appears, click the Member
Variables tab. In the Control ID window click IDC_PRONTOCAM1 and then click Add Variable. Confirm generating the new
CProntocam class. When the Add Member Variable dialog appears, enter the name for the Prontocam object, for instance
m_Prontocam . Click OK to close the Wizard.
VC++ 7.0 (.NET)
Right click on the Prontocam control in the program dialog and select Add Variable from the shortcut menu. Add Member
Variable Wizard will appear. In the Variable name field enter the name for the Prontocam object, for instance
m_Prontocam , and click finish. The Wizard will generate a wrapper class for Prontocam control and add a corresponding
member variable to the main dialog class.
Selecting the Camera
Right click on the Prontocam control in the program dialog and select Properties from the shortcut menu. (In .NET select
Property pages from the View menu). This will display the Prontocam Class Properties tab dialog. Click the Source tab. The
Camera list box will contain the names of the DCAM cameras connected to your system. Select the one you intend to use.
Selecting the Video Mode and Frame Rate
Switch to the Format tab. Click the arrow next to the Mode box. The list box will display all the video modes available for
the chosen camera. Select the one you intend to use. Then select the desired frame rate from the Rate list box.
Adjusting the Exposure settings
Switch to the Exposure tab. Using the slider controls adjust the Shutter, Gain and Iris settings. Note that the availability of
e controls depends on the selected camera. th
Modifying the Control's appearance
Switch to the Source tab. Select 3D look and Scroll bars check boxes:
ding the Start button
trols toolbox click on the Button icon and then draw a rectangular area on the program dialog. A button
n and select Properties from the shortcut menu. In the Caption field type
art" and double click on the button. The Add Member Function dialog box will appear. After clicking OK the source code
nButton1 added. Insert one line to the function body:
++ 6.0
{
ntrol notification handler code here
C++ 7.0
void CMyProntocamDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
Ad
In the Con
"Button1" will appear. Right click on the butto
"St
window will be displayed with the new member function O
VC
void CMyProntocamDlg::OnButton1()
// TODO: Add your co
m_Prontocam.SetAcquire(TRUE);
}
V
18
19
m_Prontocam.put_Acquire(TRUE);
}
This will activate continuous acquisition when the button is clicked.
Adding text boxes
In the Controls toolbox click on the Edit Box icon and then draw a small rectangular area on the program dialog. Repeat this
two more times. Your final design of the program dialog will be similar to this:
nt
ontrol in the program dialog and select Events. . from the shortcut menu. Highlight the
nt handler OnMouseMoveProntocam1 will be added to the source
de. Add the following lines to the body of the function:
ouseMoveProntocam1(short x, short y)
SetDlgItemInt(IDC_EDIT3,m_Prontocam.GetPixel(x,y));
}
Running the application
From the Build menu of the development environment select Execute MyProntocam.exe. This will build and run the
application. The application dialog will appear on the screen with a black image window and empty text boxes. Click the
Start button to activate the continuous video acquisition and move the mouse cursor over the image window. You are now
able to watch and scroll the live image and analyze pixel coordinates and values - all in real time!
Adding the MouseMove eve
Right click on the Prontocam c
MouseMove event and click Add and Edit. The new eve
co
void CMyProntocamDlg::OnM
{
// TODO: Add your control notification handler code here
SetDlgItemInt(IDC_EDIT1,x);
SetDlgItemInt(IDC_EDIT2,y);
2.3. VB.NET This chapter shows you how to get started with Prontocam control in VB.NET. With just a few mouse clicks and a few lines
of code, you will be able to display a live video image in your VB.NET program, access the array of pixel values and display
them in a table in real time.
. Creating the Project
In the .NET development environment select New -> Project. The New Project Dialog box will appear. Select Visual Basic
projects on the left and Windows Application on the right. In the Name filed below type the name of your application, for
instance MyProntocam and click OK . The project will be created, and the main application form will be displayed for editing.
Creating the Control
In the Toolbox select Components. From the Tools menu select Customize Toolbox and then select Prontocam Class from
the list. You will see Prontocam icon appear at the bottom of the toolbox. Click the Prontocam icon in the Toolbox and draw
a rectangular area on the form. A rectangle with the text "Prontocam Control" will appear on the form, and the Properties
window on the right will display Prontocam's properties.
Selecting the Camera
In the properties window, click the Camera property. The list box will display all DCAM compatible
cameras connected to your system. Select the one you intend to use:
Selecting the Video Mode
In the Properties window, click the Mode property. The list box will display all the video modes
the one you intend to use: available for the chosen camera. Select
e Start and Stop buttons
program dialog. A
t". Double click on the
function Button1_Click will be added to the Form1.vb source code. Insert one line to the function body:
b Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Adding th
In the Toolbox select Windows Form , click on the Button icon and then draw a rectangular area on the
button "Button1" will appear. Go to the Property window and change the Text property to "Star
button. A new
Private Su
20
21
utton1.Click
rue
AxProntocam1.Acquire = False
End Sub
Adding the Grid
From the Tools menu select Customize Toolbox and then select Microsoft Flex Grid Control from the list. A FlexGrid icon will
appear at the bottom of the toolbox. Click the icon and draw a rectangular area on the form. Go to the Property window
and set both Cols and Rows property to 5. You will see a corresponding number of raws and columns added to the grid on
the main form. Your final design of the main form will be similar to this:
B
AxProntocam1.Acquire = T
End Sub
Repeat the same procedure for the Stop button adding the following line to the Button2_Click function:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Adding the FrameAcquired event
tocam control window. The code window will appear with an empty AxProntocam1_FrameAcquired
nter the code that will retrieve an image data array and display pixel values in the grid
ontocam1_FrameAcquired(ByVal sender As System.Object, ByVal e As
AcquiredEvent) Handles
ntocam1.FrameAcquired
As Array
Integer
im Y As Integer
Data
Next
End Sub
ar on the screen with a black image window and empty text boxes. Click the Start button to
activate the continuous video acquisition. The live image will appear in the control window and the real-time pixel values
able.
Double-click in the Pron
subroutine in it. It is now time to e
cells:
Private Sub AxPr
AxPRONTOCAMLib._IProntocamEvents_Frame
AxPro
Dim A
Dim X As
D
A = AxProntocam1.GetImage
For y = 1 To 4
For x = 1 To 4
AxMSFlexGrid1.set_TextMatrix(Y, X, A(X, Y))
Next
Running the application
From the Debug menu of the development environment select Start or press F5. This will build and run the application. The
application dialog will appe
will be displayed in the t
22
2.4. his chapter shows you how to get started with Prontocam control in Visual C#. With just a few mouse clicks and a few
able to display a live video image in your C# program and report a value of a pixel pointed by a
. Creating the Project
pplication, for
stance MyProntocam and click OK . The project will be created, and the main application form will be displayed for editing.
ols menu select Customize Toolbox and then select Prontocam Class from
the list. You will see Prontocam icon appear at the bottom of the toolbox.
Visual C# T
lines of code, you will be
mouse cursor in real time.
In the .NET development environment select New -> Project. The New Project Dialog box will appear. Select Visual C#
projects on the left and Windows Application on the right. In the Name filed below type the name of your a
in
Creating the Control
In the Toolbox select Components. From the To
Click the Prontocam icon in the Toolbox and draw a rectangular area on the form. A rectangle with the text "Prontocam
Control" will appear on the form, and the Propertie indow on the right will display Prontocam's properties.
roperty. The list box will display all DCAM compatible cameras connected to
your system. Select the one you intend to use:
s w
Selecting the Camera
In the properties window, click the Camera p
Selecting the Video Mode
In the Properties window, click the Mode property. The list box will display all the video modes available for the chosen
camera. Select the one you intend to use:
Modifying the Control's appearance
In the Properties window scroll up to the DCAM Source category and set the Edge and ScrollBars fields to "Yes"
Adding the Start button
In the Toolbox select Windows Form , click on the Button icon and then draw a rectangular area on the program dialog. A
button "Button1" will appear. Go to the Property window and change the Text property to "Start". Double click on the
button. A new member function button1_Click will be added to the Form1 source window. Insert one line to the function
body:
private void button1_Click(object sender, System.EventArgs e)
{
axProntocam1.Acquire=true;
}
This will activate continuous acquisition when the button is clicked.
This will activate continuous acquisition when the button is clicked.
Adding text boxes
In the Toolbox click on the TextBox icon and then draw a small rectangular area on the program
dialog. Repeat this two more times. Your final design of the main form will be similar to this:
form. In the Property window click the Event button. In
Adding the MouseMove event
Click on the Prontocam control on the main
the list of events double-click the MouseMoveEvent .
The new event handler axProntocam1_MouseMoveEvent will be added to the source code. Add the
following lines to the body of the function:
private void axProntocam1_MouseMoveEvent(object sender,
AxPRONTOCAMLib._IProntocamEvents_MouseMoveEvent e)
23
24
textBox1.Text=ToString(e.x);
textBox2.Text=e.y;
textBox3.Text=axProntocam1.GetPixel(e.x,e.y);
}
Running the application
From the Debug menu of the development environment select Start or press F5. This will build and
run the application. The application dialog will appear on the screen with a black image window and
empty text boxes. Click the Start button to activate the continuous video acquisition and move the
mouse cursor over the image window. You are now able to watch and scroll the live image and analyze
pixel coordinates and values - all in real time!
{
25
3. Reference Properties
Methods
Events
Property Pages
3.1. Properties Prontocam properties are divided into four categories and can be modified in a Property Window of your development
environment, or in Prontocam property pages. Appearance Category
BackColor Returns or sets the background color of the control window
Display Enables/disables automatic live display in the control window.
Edge Enables/disables the 3D look of the control window
ScrollBars Enables/disables the scroll bars in the control window
ScrollX Returns or sets the current horizontal scroll position for the live video
ScrollY Returns or sets the current vertical scroll position for the live video
Flip Flips the current frame horizontally or/and vertically
Overlay Enables/disables the overlay
OverlayColor Returns or sets the color of the overlay graphics
OverlayFont Returns or sets the font for drawing text in the overlay
Dcam Source Category
Camera Returns or sets the index of the currently selected camera
Trigger Enables/disables the hardware trigger
TriggerSource Returns or sets the trigger source
TriggerMode Returns or sets the trigger mode
TriggerCounter Returns or sets the trigger counter for trigger modes 2 and 3
TriggerPolarity Returns or sets the trigger polarity
Acquire Enables/disables the continuous acquisition mode
Asynch Enables/disables the asynchronous mode for video acquisition
Palette Returns or sets the number of the current live video palette
Magnification Returns or sets the magnification factor for the live video display
Dcam Format Category
Mode Returns or sets the currently selected video mode
Rate Returns or sets the current frame rate
PacketSize Returns or sets the number of bytes in an isochronous packet
SizeX Returns or sets the width of the partial scan window
SizeY Returns or sets the height of the partial scan window
StartX Returns or sets the horizontal offset of the partial scan window
StartY Returns or sets the vertical offset of the partial scan window
SwapBytes Enables/disables byte swapping for 16- and 48-bit video modes
BitShift Returns or sets the bit shift for 16- and 48-bit video modes
26
Dcam Exposure Category
Shutter Returns or sets the shutter value
ShutterControl Returns or sets the shutter control mode
Gain Returns or sets the gain value
GainControl Returns or sets the gain control mode
Iris Returns or sets the shutter value
IrisControl Returns or sets the iris control mode
AutoExposure Enables/disables the autoexposure mode
AutoExposureRef Returns or sets the autoexposure reference value
Dcam Color Category
Saturation Returns or sets the saturation value
SaturationControl Returns or sets the saturation control mode
Hue Returns or sets the hue value
HueControl Returns or sets the hue control mode
WhiteBalanceUB Returns or sets the U/B value of the white color
WhiteBalanceVR Returns or sets the V/R value of the white color
WhiteBalanceControl Returns or sets the white balance control mode
Bayer Enables/disables the Bayer conversion mode and selects conversion method
BayerLayout Returns or sets the pixel layout in the Bayer array
Dcam Advanced Category
Brightness Returns or sets the brightness value
BrightnessControl Returns or sets the brightness control mode
Gamma Returns or sets the gamma value
GammaControl Returns or sets the gamma control mode
Sharpness Returns or sets the sharpness value
SharpnessControl Returns or sets the sharpness control mode
Focus Returns or sets the focus value
FocusControl Returns or sets the focus control mode
Zoom Returns or sets the zoom value
ZoomControl Returns or sets the zoom control mode
27
3.1.1. Acquire
Description
Enables/disables the continuous acquisition mode. If the acquisition mode is enabled and the Display
property is turned on, the live video will be displayed in the control window.
Syntax
[VB]
objProntocam.Acquire [= Value]
[C/C++]
HRESULT get_Acquire ( bool *pAcquire );
HRESULT put_Acquire( bool pAcquire );
Data Type [VB]
Boolean
Parameters [C/C++]
pAcquire [out,retval]
Pointer to the Boolean that is TRUE if the continuous acquisition is enable, or FALSE otherwise
Acquire [in]
Set to TRUE to enable the continuous acquisition, or set to FALSE otherwise
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example activates the continuous acquisition mode upon clicking the Start button:
Private Sub cmdStart_Click()
On Error GoTo err_cmdStart
Prontocam1.Acquire=True
Exit Sub
err_cmdStart:
MsgBox Err.Description
End Sub
Remarks
If this property is set to TRUE, the control will continuously acquire the video into the internal image memory. The
FrameAcquired event will be generated upon completing each frame. To access the content of the image memory, use
GetPixel, GetLine, GetImageWindow and GetImageData methods.
Note that this property works in both the design and rin-time modes. If your development environment doesn't close the
design view prior to going to the run-time mode, a conflict will occur between two Prontocam objects trying to acquire the
video from the same camera. In order to prevent this, it is recommended to keep the Acquire property set to FALSE in the
design mode and turn it on by an explicit command in the program code (see the example above).
28
3.1.2. Asynch
Description
Enables/disables the asynchronous mode for video acquisition.
Syntax
[VB]
objProntocam.Asynch [= Value]
[C/C++]
HRESULT get_Asynch ( bool *pAsynch );
HRESULT put_Asynch( bool pAsynch );
Data Type [VB]
Boolean
Parameters [C/C++]
pAsynch [out,retval]
Pointer to the Boolean that is TRUE if the asynchronous acquisition is enable, or FALSE otherwise
Asynch [in]
Set to TRUE to enable the asynchronous acquisition, or set to FALSE for synchronous acquisition
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example sets the acquisition in the asynchronous mode:
Prontocam1.Asynch = True
MsgBox Prontocam1.Asynch
Remarks
If this property is set to TRUE, the camera will continuously transfer pixels into the internal image memory, allowing your
application to perform other tasks while the acquisition of the next frame occurs. The asynchronous mode provides the
fastest and most efficient setup for real-time image processing. However, if processing occurs at a slower rate than pixels
are acquired, using this mode may result in the decomposition of images and loss of data.
Setting the Asynch property to FALSE will set the board to the synchronous mode. In this mode the acquisition of the next
frame will be initiated upon calling the Grab method. The synchronous mode is slower, but it guarantees the wholeness of
images during real-time processing.
29
3.1.3. AutoExposure
Description
Enables/disables the auto exposure (AE) mode
Syntax
[VB]
objProntocam.AutoExposure [= Value]
[C/C++]
HRESULT get_AutoExposure( bool *pAutoExposure );
HRESULT put_AutoExposure( bool AutoExposure );
Data Type [VB]
Boolean
Parameters [C/C++]
pAutoExposure [out, retval]
Pointer to the the Boolean that is TRUE if the auto exposure mode is enable, or FALSE otherwise
AutoExposure [in]
Set to TRUE to enable the auto exposure mode, or set to FALSE otherwise
Return Values
S_OK
Success
E_FAIL
The iris control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to activate the auto exposure mode
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.AutoExposure = True
Else
Prontocam1.AutoExposure = False
End If
End Sub
Remarks
When the auto exposure mode is activated, the camera will automatically control the exposure by keeping Shutter, Gain
and/or Iris at optimal levels. The property is available only if the currently selected camera supports auto exposure control.
The reference value for auto exposure can be adjusted by AutoExposureRef.
30
3.1.4. AutoExposureRef
Description
Returns or sets the row value of the autoexposure reference
Syntax
[VB]
objProntocam.AutoExposureRef [= Value]
[C/C++]
HRESULT get_AutoExposureRef( long *pAutoExposureRef );
HRESULT put_AutoExposureRef( long AutoExposureRef );
Data Type [VB]
Long
Parameters [C/C++]
pAutoExposureRef [out,retval]
Pointer to the current autoexposure reference value
AutoExposureRef [in]
The autoexposure reference value to be set
Return Values
S_OK
Success
E_FAIL
The autoexposure control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the autoexposure reference.
Private Sub Form_Load()
Prontocam1.Acquire=True
Prontocam1.AutoExposure=True
HScroll1.Value = Prontocam1.AutoExposureRef
HScroll1.Min = Prontocam1.GetExposureMin
HScroll1.Max = Prontocam1.GetExposureMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.AutoExposureRef = HScroll1.Value
End Sub
Remarks
This property changes the reference level used by the camera circuitry in the AutoExposure mode. The valid property range
is reported by the GetExposureMin and GetExposureMax methods. Note that the property is available only if the currently
selected camera supports the autoexposure control.
31
t
3.1.5. BackColor
Description
Returns or sets the background color of the control window.
Syntax
[VB]
objProntocam.BackColor [= Color]
[C/C++]
HRESULT get_BackColor(OLE_COLOR& pColor);
HRESULT put_BackColor(OLE_COLOR Color);
Data Type [VB]
RGB color
Parameters [C/C++]
pColor [out,retval]
Pointer to the current background color
Color [in]
The background color to be set
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example sets the background color of the control to light gray:
Prontocam1.BackColor = RGB (192, 192, 192)
Remarks
When the control displays a live video, its background is only visible if the size of the video display in the horizontal or
vertical dimension is less than the size of the control window. BackColor is an ambient property, therefore its default value
is defined by the color of the form on which the control resides. Changing the background color of the container application
will cause an equivalent change in the BackColor property of Pron ocam.
32
3.1.6. Bayer
Description
Enables/disables the Bayer conversion mode and selects the Bayer conversion method.
Syntax
[VB]
objProntocam.Bayer [= Value]
[C/C++]
HRESULT get_Bayer ( short *pBayer );
HRESULT put_Bayer( short pBayer );
Data Type [VB]
Integer
Parameters [C/C++]
pBayer [out,retval]
Pointer to the ordinal number of the currently selected Bayer filter, zero if Bayer conversion is disabled.
Bayer [in]
Set to zero disable Bayer conversion, or set to values from 1 to 3 to select one of the following Bayer filters:
1 - Nearest Neighbour filter. Missing pixels are substituted with adjacent pixels of the same color.
2 - Bilinear filter. Calculates the values of missing pixels by performing bilinear interpolation of the adjacent pixels.
3 - High Quality Linear filter. Calculates the values of missign pixels based on the Malvar, He and Cutler algorithm.
4 - Chrominance filter. Interpolates the values of missing pixels based on chrominance gradients.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example activates the bilinear Bayer filter:
Prontocam1.Bayer = 1
Remarks
Bayer images are usually generated by a single-chip CCD camera, which has a color filter mosaic array (CFA) installed in
front of the sensor. The most frequently used Bayer pattern has the following layout:
G B G B R
R G R G R
G B G B G
R G R G R
Each pixel value in a Bayer image corresponds to the intensity of the pixel behind the corresponding
color filter. The conversion from such a grayscale image to RGB image is typically done on the camera
itself, however some cameras (known as Bayer cameras) output a raw Bayer image unchanged. The
Bayer transforms such an image into RGB image by performing real-time Bayer color reconstruction
(demosaicing). The layout of the Bayer array can be selected with the BayerLayout property.
Note that the higher the ordinal number of the selected Bayer filter is, the higher the quality of the
resulting image is and the higher the CPU load is. If the application speed is critical, consider using the
Nearest Neighbour filter.Note that this property is available only if the current video Mode is a
monochrome one.
33
3.1.7. BayerLayout
Description
Returns or sets the layout of pixels in the CCD array of a Bayer camera. The values from 0 to 3 correspond to the following
layouts:
0 – GB 1 – GR 2 – BG 0 – RG
G B G B G
R G R G R
G R G R G
B G B G B
B G B G B
G R G R G
R G R G R
G B G B R
Syntax
[VB]
objProntocam.BayerLayout [= Value]
[C/C++]
HRESULT get_BayerLayout( long *pBayerLayout );
HRESULT put_BayerLayout( long BayerLayout );
Data Type [VB]
Long
Parameters [C/C++]
pBayerLayout [out,retval]
Pointer to the ordinal number of the currently selected layout
BayerLayout [in]
The number of the layout to be selected
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example demonstrates the use of a combo box for changing the Bayer layout:
Private Sub Form_Load()
Prontocam1.Acquire = True
Prontocam1.Bayer = True
Combo1.AddItem ("GB")
Combo1.AddItem ("GR")
Combo1.AddItem ("BG")
Combo1.AddItem ("RG")
Combo1.ListIndex = 1
End Sub
Private Sub Combo1_Click()
Prontocam1.BayerLayout = Combo1.ListIndex
End Sub
Remarks
34
This property works in combination with the Bayer filter. The layout of the CCD array is defined by your Bayer camera
specifications. If you use on of the partial scan (Format 7) video Modes and apply an offset to the partial scan window (see
StartX, StartY), you might need to select a different Bayer layout depending on the position of the top left corner of the
window relative to the CCD mask. Note that this property is available only if the current video Mode is a monochrome one.
3.1.8. BitShift
Description
Returns or sets the bit shift value for 16-bit and 48-bit video modes.
Syntax
[VB]
objProntocam.BitShift [= Value]
[C/C++]
HRESULT get_BitShift( long *pShutter );
HRESULT put_BitShift( long Shutter );
Data Type [VB]
Long
Parameters [C/C++]
pBitShift [out,retval]
Pointer to the current bit shift
BitShift [in]
The bit shift to be set
Return Values
S_OK
Success
E_FAIL
The shutter control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example sets the bit shift to 6.
Prontocam1.BitShift=6
Remarks
This property defines the right bit shift to be applied to 16-bit pixel values in the image buffer. When displaying and saving
16- and 48-bit images, Prontocam assumes that pixel values are mapped to the whole 16-bit dynamic range (0-65535).
Certain cameras however may output data in narrower dynamic range resulting in dark images, in which case the BitShift
property must be used. For example, if the original pixel values have the dynamic range of 10 bits (0-1023), setting
BitShift to 6 will cause the real-time mapping of images to the entire 16-bit scale.
Note that this property is availalbe only in 16- and 48-bit video Modes.
35
3.1.9. Brightness
Description
Returns or sets the row value of the brightness
Syntax
[VB]
objProntocam.Brightness [= Value]
[C/C++]
HRESULT get_Brightness( long *pBrightness );
HRESULT put_Brightness( long Brightness );
Data Type [VB]
Long
Parameters [C/C++]
pBrightness [out,retval]
Pointer to the current brightness value
Brightness [in]
The brightness value to be set
Return Values
S_OK
Success
E_FAIL
The brightness control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the
camera's brightness.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Brightness
HScroll1.Min = Prontocam1.GetBrightnessMin
HScroll1.Max = Prontocam1.GetBrightnessMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Brightness = HScroll1.Value
End Sub
Remarks
This property changes the black level of the video by adding a constant amount of luminance to each pixel. The valid
property range is reported by the GetBrightnessMin and GetBrightnessMax methods.Note that the property is available only
if the currently selected camera supports software brightness control.
36
r
3.1.10. BrightnessControl
Description
Returns or sets the brightness control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The brightness level is controlled by the value of the Brightness property
1 - Auto
The camera controls the brightness level by itself continuously
2 - One push
The camera sets the optimal brightness level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.BrightnessControl [= Value]
[C/C++]
HRESULT get_BrightnessControl( short *pBrightnessControl );
HRESULT put_BrightnessControl( short BrightnessControl );
Data Type [VB]
Integer
Parameters [C/C++]
pBrightnessCont ol [out, retval]
Pointer to the current brightness control mode
BrightnessControl [in]
The brightness control mode to be set
Return Values
S_OK
Success
E_FAIL
The brightness control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and
automatic brightness control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.BrightnessControl = 1
Else
Prontocam1.BrightnessControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic brightness control.
37
3.1.11. Camera
Description
Returns or sets the index of the currently selected camera. If no DCAM camera is connected to the system, the property will
return -1.
Syntax
[VB]
objProntocam.Camera [= Value]
[C/C++]
HRESULT get_Camera( long *pCamera );
HRESULT put_Camera( long Camera );
Data Type [VB]
Long
Parameters [C/C++]
pCamera [out, retval]
Pointer to the camera's index
Camera [in]
The index of the camera to be selected
Return Values
S_OK
Success
E_FAIL
The selected camera doesn't comply with 1394 DCAM specifications (i.e. DV camera)
E_INVALIDARG
The camera's index is out of range.
Example
This VB example initializes a combo box with camera names and uses it to switch between the cameras:
Private Sub Form_Load()
CamLst = Prontocam1.GetCameraList
For i = 0 To UBound(CamLst)
Combo1.AddItem (CamLst(i))
Next
Combo1.ListIndex = 0
Prontocam1.Acquire = True
End Sub
Private Sub Combo1_Click()
Prontocam1.Camera = Combo1.ListIndex
End Sub
Remarks
The value of the property is a zero-based index into the list of cameras connected to the 1394 board.The list of camera
names can be retrieved with GetCameraList. If you use the property window of your development environment or
Prontocam's property pages, the Camera property field will be presented as a list box containing the indexes and names of
all the connected cameras.
38
3.1.12. Display
Description
Enables/disables live display in the control window. When this property is enabled, each frame will be automatically
displayed upon acquisition. .
Syntax
[VB]
objProntocam.Display [= Value]
[C/C++]
HRESULT get_Display ( bool *pDisplay );
HRESULT put_Display( bool Display );
Data Type [VB]
Boolean
Parameters [C/C++]
pDisplay [out,retval]
Pointer to the Boolean that is TRUE if the live display is enable, or FALSE otherwise
Display [in]
Set to TRUE to enable the live display, or set to FALSE to disable it
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example disables the live display and uses the FrameAcquired event to invert pixel value in the bottom left corner
of the current frame and display the processed frame in real time.
Private Sub Form_Load()
Prontocam1.Display = False
Prontocam1.Acquire = True
End Sub
Private Sub Prontocam1_FrameAcquired()
a = Prontocam1.GetImageData
For x = 0 To 200
For y = 0 To 200
a(x, y) = 255 - a(x, y)
Next
Next
Prontocam1.Draw
End Sub
Remarks
When you create a new instance of the control, this property is enabled by default. You should disable the live display when
you want to perform real time image processing and display the processed image in the control window. After the
processing is done, the current frame should be displayed by calling the Draw method.
39
3.1.13. Edge
Description
Enables/disables the 3D look (sunken edge) of the control window.
Syntax
[VB]
objProntocam.Edge [= Value]
[C/C++]
HRESULT get_Edge ( bool *pEdge );
HRESULT put_Edge( bool Edge );
Data Type [VB]
Boolean
Parameters [C/C++]
pEdge [out,retval]
Pointer to the Boolean that is TRUE if the 3D look is enable, or FALSE otherwise
Edge [in]
Set to TRUE to enable the 3D look, or set to FALSE to disable it
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example enables the 3D look on the control window:
Prontocam1.Edge = True
MsgBox Prontocam1.Edge
Remarks
If this property is set to TRUE, the sunken edge will appear around the border of the Prontocam control window.
40
3.1.14. Flip
Description
Returns or sets the horizontal and vertical flipping of the current frame. The values from 0 to 3 correspond to the following
flipping conditions:
0 – None No image flipping is performed. 1 – Horizontal The image is flipped horizontally.
2 – Vertical The image is flipped vertically. 3 – Both The image is flipped horizontally and vertically.
Syntax
[VB]
objProntocam.Flip [= Value]
[C/C++]
HRESULT get_Flip( long *pFlip );
HRESULT put_Flip( long Flip );
Data Type [VB]
Long
New link
Parameters [C/C++]
pFlip [out,retval]
Pointer to the ordinal number of the currently selected flipping condition.
Palette [in]
The flipping condition to be set.
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example demonstrates the use of a combo box for flipping the live video:
Private Sub Form_Load()
Prontocam1.Acquire = True
Combo1.AddItem ("None")
Combo1.AddItem ("Horizontal")
56 Prontocam User Guide
Combo1.AddItem ("Vertical")
Combo1.AddItem ("Diagonal")
Combo1.ListIndex = 0
End Sub
Private Sub Combo1_Click()
Prontocam1.Flip = Combo1.ListIndex
End Sub
Remarks
Flipping affects the way the video is displayed in the control window as well as actual order of pixels in the image frame. If
you apply on of the flipping options, the data returned by GetImageData and other data access methods will be flipped as
well.
41
3.1.15. Focus
Description
Returns or sets the row value of the focus
Syntax
[VB]
objProntocam.Focus [= Value]
[C/C++]
HRESULT get_Focus( long *pFocus );
HRESULT put_Focus( long Focus );
Data Type [VB]
Long
Parameters [C/C++]
pFocus [out,retval]
Pointer to the current focus value
Focus [in]
The focus value to be set
Return Values
S_OK
Success
E_FAIL
The focus control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the
camera's focus.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Focus
HScroll1.Min = Prontocam1.GetFocusMin
HScroll1.Max = Prontocam1.GetFocusMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Focus = HScroll1.Value
End Sub
Remarks
This property provides adjustment of the camera's lens to the subject distance. The valid property range is reported by the
GetFocusMin and GetFocusMax methods. Note that the property is available only if the currently selected camera is
equipped with a motorized lens supports software focus control.
42
3.1.16. FocusControl
Description
Returns or sets the focus control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The focus level is controlled by the value of the Focus property
1 - Auto
The camera controls the focus level by itself continuously
2 - One push
The camera sets the optimal focus level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.FocusControl [= Value]
[C/C++]
HRESULT get_FocusControl( short *pFocusControl );
HRESULT put_FocusControl( short FocusControl );
Data Type [VB]
Integer
Parameters [C/C++]
pFocusControl [out, retval]
Pointer to the current focus control mode
FocusControl [in]
The focus control mode to be set
Return Values
S_OK
Success
E_FAIL
The focus control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and
automatic focus control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.FocusControl = 1
Else
Prontocam1.FocusControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic focus control.
43
3.1.17. Gain
Description
Returns or sets the row value of the gain
Syntax
[VB]
objProntocam.Gain [= Value]
[C/C++]
HRESULT get_Gain( long *pGain );
HRESULT put_Gain( long Gain );
Data Type [VB]
Long
Parameters [C/C++]
pGain [out,retval]
Pointer to the current gain value
Gain [in]
The gain value to be set
Return Values
S_OK
Success
E_FAIL
The gain control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the camera's gain.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Gain
HScroll1.Min = Prontocam1.GetGainMin
HScroll1.Max = Prontocam1.GetGainMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Gain = HScroll1.Value
End Sub
Remarks
This property changes the camera's video signal amplification. The valid property range is reported by the GetGainMin and
GetGainMax methods. Note that the property is available only if the currently selected camera supports software gain
control.
44
3.1.18. GainControl
Description
Returns or sets the gain control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The gain level is controlled by the value of the Gain property
1 - Auto
The camera controls the gain level by itself continuously
2 - One push
The camera sets the optimal gain level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.GainControl [= Value]
[C/C++]
HRESULT get_GainControl( short *pGainControl );
HRESULT put_GainControl( short GainControl );
Data Type [VB]
Integer
Parameters [C/C++]
pGainControl [out, retval]
Pointer to the current gain control mode
GainControl [in]
The gain control mode to be set
Return Values
S_OK
Success
E_FAIL
The gain control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and
automatic gain control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.GainControl = 1
Else
Prontocam1.GainControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic gain control.
45
3.1.19. Hue
Description
Returns or sets the row value of the hue
Syntax
[VB]
objProntocam.Hue [= Value]
[C/C++]
HRESULT get_Hue( long *pHue );
HRESULT put_Hue( long Hue );
Data Type [VB]
Long
Parameters [C/C++]
pHue [out,retval]
Pointer to the current hue value
Hue [in]
The hue value to be set
Return Values
S_OK
Success
E_FAIL
The hue control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a Scroll control for real-time adjustment of the camera's hue.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Hue
HScroll1.Min = Prontocam1.GetHueMin
HScroll1.Max = Prontocam1.GetHueMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Hue = HScroll1.Value
End Sub
Remarks
This property changes the global shitf of the color tint. The valid property range is reported by the GetHueMin and
GetHueMax methods. Note that the property is available only if the currently selected camera is a color one and supports
software hue control.
46
3.1.20. HueControl
Description
Returns or sets the hue control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The hue level is controlled by the value of the Hue property
1 - Auto
The camera controls the hue level by itself continuously
2 - One push
The camera sets the optimal hue level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.HueControl [= Value]
[C/C++]
HRESULT get_HueControl( short *pHueControl );
HRESULT put_HueControl( short HueControl );
Data Type [VB]
Integer
Parameters [C/C++]
pHueControl [out, retval]
Pointer to the current hue control mode
HueControl [in]
The hue control mode to be set
Return Values
S_OK
Success
E_FAIL
The hue control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic hue control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.HueControl = 1
Else
Prontocam1.HueControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic hue control.
47
3.1.21. Gamma
Description
Returns or sets the row value of the gamma
Syntax
[VB]
objProntocam.Gamma [= Value]
[C/C++]
HRESULT get_Gamma( long *pGamma );
HRESULT put_Gamma( long Gamma );
Data Type [VB]
Long
Parameters [C/C++]
pGamma [out,retval]
Pointer to the current gamma value
Gamma [in]
The gamma value to be set
Return Values
S_OK
Success
E_FAIL
The gamma control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the
camera's gamma value.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Gamma
HScroll1.Min = Prontocam1.GetGammaMin
HScroll1.Max = Prontocam1.GetGammaMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Gamma = HScroll1.Value
End Sub
Remarks
This property changes the gamma correction factor of the camera's circuitry. The gamma correction modifies an image by
applying standard, nonlinear gamma curves to the intensity scale. Increasing the gamma value will lighten the video and
increase the contrast in its darker areas. The valid range of the raw gamma values is reported by the GetGammaMin and
GetGammaMax methods. Note that the property is available only if the currently selected camera supports software gamma
control.
48
r
3.1.22. GammaControl
Description
Returns or sets the gamma control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The gamma level is controlled by the value of the Gamma property
1 - Auto
The camera controls the gamma level by itself continuously
2 - One push
The camera sets the optimal gamma level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.GammaControl [= Value]
[C/C++]
HRESULT get_GammaControl( short *pGammaControl );
HRESULT put_GammaControl( short GammaControl );
Data Type [VB]
Integer
Parameters [C/C++]
pGammaControl [out, retval]
Pointer to the current gamma control mode
GammaCont ol [in]
The gamma control mode to be set
Return Values
S_OK
Success
E_FAIL
The gamma control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic gamma control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.GammaControl = 1
Else
Prontocam1.GammaControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic gamma control.
49
3.1.23. Iris
Description
Returns or sets the row value of the iris
Syntax
[VB]
objProntocam.Iris [= Value]
[C/C++]
HRESULT get_Iris( long *pIris );
HRESULT put_Iris( long Iris );
Data Type [VB]
Long
Parameters [C/C++]
pIris [out,retval]
Pointer to the current iris value
Iris [in]
The iris value to be set
Return Values
S_OK
Success
E_FAIL
The iris control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the
camera's iris.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Iris
HScroll1.Min = Prontocam1.GetIrisMin
HScroll1.Max = Prontocam1.GetIrisMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Iris = HScroll1.Value
End Sub
Remarks
This property changes the opening of the lens diaphragm. The valid property range is reported by the GetIrisMin and
GetIrisMax methods. Note that the property is available only if the currently selected camera is equipped with a motorized
lens and supports software iris control.
50
t
I
3.1.24. IrisControl
Description
Returns or sets the iris control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The iris level is controlled by the value of the Iris property
1 - Auto
The camera controls the iris level by itself continuously
2 - One push
The camera sets the optimal iris level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.IrisControl [= Value]
[C/C++]
HRESULT get_IrisControl( short *pIrisControl );
HRESULT put_IrisControl( short IrisControl );
Data Type [VB]
Integer
Parameters [C/C++]
pIrisCon rol [out, retval]
Pointer to the current iris control mode
risControl [in]
The iris control mode to be set
Return Values
S_OK
Success
E_FAIL
The iris control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and
automatic iris control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.IrisControl = 1
Else
Prontocam1.IrisControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic iris control.
51
t
3.1.25. Magnification
Description
Returns or sets the zoom factor for the live video display. The zero value will fit the image to the size of
the control window.
Syntax
[VB]
objProntocam.Magnification [= Value]
[C/C++]
HRESULT get_ Magnification ( float *p Magnification );
HRESULT put_ Magnification ( float Magnification );
Data Type [VB]
Float
Parameters [C/C++]
p Magnification [out,retval]
Pointer to the current Magnification factor
Magnification [in]
The Magnification factor to be set.
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the zoom factor to 0.25:
Prontocam1. Magnification = 0.25
MsgBox Prontocam1. Magnification
Remarks
This property adjusts the magnification of the life video display. It does not change the content of the image data, but only
its appearance in the Pron ocam control window. The valid property values are from 0 to 100. If the Magnification property
is set to zero, the video image will be fit to the size of the control window. In this case the display might not retain the
original proportions of the video frame. Note that the Acquire and Display properties must be set to TRUE in order for the
live video to be displayed in the control window.
52
3.1.26. Mode
Description
Returns or sets the index of the currently selected video mode.
Syntax
[VB]
objProntocam.Mode [= Value]
[C/C++]
HRESULT get_Mode( long *pMode );
HRESULT put_Mode( long Mode );
Data Type [VB]
Long
Parameters [C/C++]
pMode [out,retval]
Pointer to the mode's index
Mode [in]
The index of the mode to be selected
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
The index is out of range
Example
This VB example initializes a combo box with the Descriptions of available video modes and uses it to select a specific
mode:
Private Sub Form_Load()
ModeLst = Prontocam1.GetModeList
For i = 0 To UBound(ModeLst)
Combo1.AddItem (ModeLst(i))
Next
Combo1.ListIndex = 0
Prontocam1.Acquire = True
End Sub
Private Sub Combo1_Click()
Prontocam1.Mode = Combo1.ListIndex
End Sub
Remarks
The value of the property is a zero-based index into the list of video modes supported by the currently selected Camera.
The list of modes can be retrieved with GetModeList. If you use the property window of your development environment or
Prontocam's property pages, the Mode property field will be presented as a list box containing all supported video modes.
The mode list is built in the accending order by browsing through all formats and modes supported by the current camera.
Those modes referred as "Format_7" are partial scan modes that typically allow for selection of userdefined frame size
(SizeX, SizeY) and PacketSize. For more information refer to "IIDC 1394-based Digital Camera Specification, Version 1.30"
published by the 1394 Trade Association.
53
3.1.27. Overlay
Description
Enables/disables the overlay.
Syntax
[VB]
objProntocam.Overlay [= Value]
[C/C++]
HRESULT get_Overlay ( bool *pOverlay );
HRESULT put_Overlay( bool pOverlay );
Data Type [VB]
Boolean
Parameters [C/C++]
pOverlay [out,retval]
Pointer to the Boolean that is TRUE if the overlay is enable, or FALSE otherwise
Overlay [in]
Set to TRUE to enable the overlay, or set to FALSE to disable it.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a red circle on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayEllipse 100,100,200,200
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
Overlay feature allows you to display custom graphics and text on the live video image. Setting this property to true causes
Prontocam to show the overlay. Disabling this property hides the overlay. Note that hiding the overlay does not erase
graphics and text from it. To clear the overlay, use OverlayClear. Also see OverlayColor, OverlayPixel, OverlayLine,
OverlayRectangle, OverlayEllipse, OverlayText.
54
3.1.28. OverlayColor
Description
Returns or sets the color of the overlay graphics.
Syntax
[VB]
objProntocam.OverlayColor [= Color]
[C/C++]
HRESULT get_OverlayColor(OLE_COLOR& pColor);
HRESULT put_OverlayColor(OLE_COLOR Color);
Data Type [VB]
RGB color
Parameters [C/C++]
pColor [out,retval]
Pointer to the current overlay color
Color [in]
The overlay color to be set
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a red circle on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayEllipse 100,100,200,200
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
Overlay feature allows you to display custom graphics and text on the live video image. Also see OverlayColor, OverlayPixel,
OverlayLine, OverlayRectangle, OverlayEllipse, OverlayText.
55
3.1.29. OverlayFont
Description
Returns or sets the font for OverlayText.
Syntax
[VB]
objProntocam.OverlayFont [= Font]
[C/C++]
HRESULT get_OverlayColor(IFontDisp* *pFont);
HRESULT put_OverlayColor(IFontDisp* Font);
Data Type [VB]
StdFont
Parameters [C/C++]
pFont [out,retval]
Pointer to the IFontDisp interface object corresponding to the current overlay font
Font [in]
IFontDisp interface object corresponding to the overlay font to be set
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a string of text on the live video:
Dim Font As New StdFont
Font.Name = "Arial"
Font.Size = 18
Font.Bold = True
Prontocam1.OverlayFont = Font
Prontocam1.OverlayText 10, 100, "Prontocam rules!"
Prontocam1.OverlayColor = RGB(255, 0, 0)
Prontocam1.Overlay = True
Remarks
Also see OverlayColor, OverlayText.
56
3.1.30. PacketSize
Description
Returns or sets the number of bytes in an isochronous packet
Syntax
[VB]
objProntocam.PacketSize [= Value]
[C/C++]
HRESULT get_PAcketSize( long *pSizeX );
HRESULT put_PacketSize( long SizeX );
Data Type [VB]
Long
Parameters [C/C++]
pPacketSize [out,retval]
Pointer to the current packet size
pPacketSize [in]
The packet size to be set
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the current packet size to 4096 bytes:
Prontocam1.PacketSize = 4096
MsgBox Prontocam1.PacketSize
Remarks
This property is available only for partial scan (Format 7) Modes and related but not necessarily indicative of the effective
frame rate. Only certain values of the packet size can be allowed depending on the camera. If the property is set to a value
which is not supported by the camera, it will be reset to the nearest allowable packet size. For more information refer to
"IIDC 1394-based Digital Camera Specification, Version 1.30" published by the 1394 Trade Association.
57
3.1.31. Palette
Description
Returns or sets the ordinal number of the currently selected live video palette. The values from 0 to 7 correspond to the
following predefined palettes:
0 - Gray
Applies the standard 256-level grayscale palette. This is a regular mode of viewing a grayscale video.
1 - Inverse
Applies the inverted 256-level grayscale palette. The video will be displayed in the negative format.
2 - Saturated
Applies the grayscale palette with colorized upper entries. The saturated palette allows you to control the dynamic range of
the video signal by bringing it slightly below the saturation level of the video camera or video amplifier. To achieve the
maximum dynamic range, adjust the intensity of the light source and/or the gain and zero level of the video amplifier so
that the red color corresponding to the brightest pixel values just barely shows up.
3 - Rainbow
Applies a color palette where the entries are evenly distributed along the Hue axis. This allows for assigning different color
pigments to different levels of intensity.
4 - Spectra
Applies a color palette where the entries are distributed along the Hue and Luminance axes. That allows for assigning
different color pigments to different levels of intensity while preserving the luminance scale.
5 - Isodense
Applies the 256-level grayscale palette, each 8-th entry of which is colorized. The isodense palette allows you to clearly see
transitions between different levels of intensities as isolines on a topographic map.
6 - Multiphase
Applies the multiphase palette. Entries in the multiphase palette are at opposite ends of the color model so even small
changes in gray levels are highlighted.
7 - Random
Applies the random color palette whose entries are filled with random values each time you select it from the menu.
Syntax
[VB]
objProntocam.Palette [= Value]
[C/C++]
HRESULT get_Palette( long *pPalette );
HRESULT put_Palette( long Palette );
Data Type [VB]
Long
Parameters [C/C++]
pPalette [out,retval]
Pointer to the ordinal number of the currently selected palette
Palette [in]
The number of the palette to be selected
Return Values
S_OK
Success
58
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example demonstrates the use of a combo box for changing display palettes on the live video:
Private Sub Form_Load()
Prontocam1.Acquire = True
Combo1.AddItem ("Gray")
Combo1.AddItem ("Inverse")
Combo1.AddItem ("Saturated")
Combo1.AddItem ("Rainbow")
Combo1.AddItem ("Spectra")
Combo1.AddItem ("Isodense")
Combo1.AddItem ("Multiphase")
Combo1.AddItem ("Random")
Combo1.ListIndex = 0
End Sub
Private Sub Combo1_Click()
Prontocam1.Palette = Combo1.ListIndex
End Sub
Remarks
The Palette property is used for viewing monochrome video in pseudo-colors. The property is only valid for a monochrome
Mode. If you use property pages in your development environment, the Palette property field will be presented as a list
box containing the names of all available palettes. Note that the Acquire and Display properties must be set to TRUE in
order for the live video to be displayed in the control window.
59
3.1.32. Rate
Description
Returns or sets the current frame rate.
Syntax
[VB]
objProntocam.Rate [= Value]
[C/C++]
HRESULT get_Rate( long *pRate );
HRESULT put_Rate( long Rate );
Data Type [VB]
Float
Parameters [C/C++]
pRate [out,retval]
Pointer to the frame rate value
Rate [in]
The value of the frame rate
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
The value is out of range
Example
This VB example sets the current frame rate to 15 fps:
Private Sub Form_Load()
Prontocam1.Rate = 15.
End Sub
Remarks
DCAM compliant cameras support the following predefined frame rates: 1.875 fps, 3.75 fps, 7.5 fps, 15 fps, 30 fps, 60 fps.
Additional frame rates can be provided by the camera manufacturer. A certain video Mode can only support certain frame
rates. The list of rates available for the current video mode can be retrieved with GetRateList. If you use the property
window of your development environment or Prontocam's property pages, the Rate property field will be presented as a list
box containing all supported frame rates. If the property is set to a value which is not supported by the current mode, it will
be reset to the nearest allowable frame rate.
Note that the Rate property is available only for the fixed video mode. If the current video mode is a partial scan one
(Format 7), use PacketSize to modify the effective frame rate. For more information refer to "IIDC 1394-based Digital
Camera Specification, Version 1.30" published by the 1394 Trade Association.
60
3.1.33. Saturation
Description
Returns or sets the row value of the color saturation
Syntax
[VB]
objProntocam.Saturation [= Value]
[C/C++]
HRESULT get_Saturation( long *pSaturation );
HRESULT put_Saturation( long Saturation );
Data Type [VB]
Long
Parameters [C/C++]
pSaturation [out,retval]
Pointer to the current saturation value
Saturation [in]
The saturation value to be set
Return Values
S_OK
Success
E_FAIL
The saturation control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the camera's saturation.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Saturation
HScroll1.Min = Prontocam1.GetSaturationMin
HScroll1.Max = Prontocam1.GetSaturationMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Saturation = HScroll1.Value
End Sub
Remarks
This property changes the color depth of the video. The valid property range is reported by the GetSaturationMin and
GetSaturationMax methods. Note that the property is available only if the currently selected camera is a color one and
supports software saturation control.
61
3.1.34. SaturationControl
Description
Returns or sets the saturation control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The saturation level is controlled by the value of the Saturation property
1 - Auto
The camera controls the saturation level by itself continuously
2 - One push
The camera sets the optimal saturation level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.SaturationControl [= Value]
[C/C++]
HRESULT get_SaturationControl( short *pSaturationControl );
HRESULT put_SaturationControl( short SaturationControl );
Data Type [VB]
Integer
Parameters [C/C++]
pSaturationControl [out, retval]
Pointer to the current saturation control mode
SaturationControl [in]
The saturation control mode to be set
Return Values
S_OK
Success
E_FAIL
The saturation control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic saturation
control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.SaturationControl = 1
Else
Prontocam1.SaturationControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic saturation control.
62
l
3.1.35. ScrollX
Description
Returns or sets the current horizontal scroll position for the live video display.
Syntax
[VB]
objProntocam.ScrollX [= Value]
[C/C++]
HRESULT get_ScrollX( long *pScrollX );
HRESULT put_ScrollX( long ScrollX );
Data Type [VB]
Long
Parameters [C/C++]
pScro lX [out,retval]
Pointer to the current horizontal scroll position.
ScrollX [in]
The horizontal scroll position to be set.
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the current horizontal scroll position to 512:
Prontocam1.ScrollX = 512
MsgBox Prontocam1.ScrollX
Remarks
The ScrollX property is only valid if the ScrollBars are present in the control window.Note that the value returned by this
property refers to the image coordinate system, not to the screen coordinates.
63
l
3.1.36. ScrollY
Description
Returns or sets the current vertical scroll position for the live video display.
Syntax
[VB]
objProntocam.ScrollY [= Value]
[C/C++]
HRESULT get_ScrollY( long *pScrollY );
HRESULT put_ScrollY( long ScrollY );
Data Type [VB]
Long
Parameters [C/C++]
pScro lY [out,retval]
Pointer to the current vertical scroll position.
ScrollY [in]
The vertical scroll position to be set.
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the current vertical scroll position to 512:
Prontocam1.ScrollY = 512
MsgBox Prontocam1.ScrollY
Remarks
The ScrollY property is only valid if the ScrollBars are present in the control window. Note that the value returned by this
property refers to the image coordinate system, not to the screen coordinates.
64
3.1.37. Sharpness
Description
Returns or sets the row value of the sharpness
Syntax
[VB]
objProntocam.Sharpness [= Value]
[C/C++]
HRESULT get_Sharpness( long *pSharpness );
HRESULT put_Sharpness( long Sharpness );
Data Type [VB]
Long
Parameters [C/C++]
pSharpness [out,retval]
Pointer to the current sharpness value
Sharpness [in]
The sharpness value to be set
Return Values
S_OK
Success
E_FAIL
The sharpness control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the sharpness value.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Sharpness
HScroll1.Min = Prontocam1.GetSharpnessMin
HScroll1.Max = Prontocam1.GetSharpnessMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Sharpness = HScroll1.Value
End Sub
Remarks
This property changes the sharpness of the video by modifying parameters of the camera's differential circuitry. The valid
property range is reported by the GetSharpnessMin and GetSharpnessMax methods. Note that the property is available only
if the currently selected camera supports software sharpness control.
65
3.1.38. SharpnessControl
Description
Returns or sets the sharpness control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The sharpness level is controlled by the value of the Sharpness property
1 - Auto
The camera controls the sharpness level by itself continuously
2 - One push
The camera sets the optimal sharpness level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.SharpnessControl [= Value]
[C/C++]
HRESULT get_SharpnessControl( short *pSharpnessControl );
HRESULT put_SharpnessControl( short SharpnessControl );
Data Type [VB]
Integer
Parameters [C/C++]
pSharpnessControl [out, retval]
Pointer to the current sharpness control mode
SharpnessControl [in]
The sharpness control mode to be set
Return Values
S_OK
Success
E_FAIL
The sharpness control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic sharpness
control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.SharpnessControl = 1
Else
Prontocam1.SharpnessControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic sharpness control.
66
3.1.39. Shutter
Description
Returns or sets the row value of the shutter
Syntax
[VB]
objProntocam.Shutter [= Value]
[C/C++]
HRESULT get_Shutter( long *pShutter );
HRESULT put_Shutter( long Shutter );
Data Type [VB]
Long
Parameters [C/C++]
pShutter [out,retval]
Pointer to the current shutter value
Shutter [in]
The shutter value to be set
Return Values
S_OK
Success
E_FAIL
The shutter control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the camera's shutter.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Shutter
HScroll1.Min = Prontocam1.GetShutterMin
HScroll1.Max = Prontocam1.GetShutterMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Shutter = HScroll1.Value
End Sub
Remarks
This property changes the integration time of the camera's sensor to a sub-value of the frame period. Depending on the
camera model, the raw shutter value can be directly or inversly related to the integration time physical value. The valid
property range is reported by the GetShutterMin and GetShutterMax methods. Note that the property is available only if the
currently selected camera supports software shutter control.
67
3.1.40. ShutterControl
Description
Returns or sets the shutter control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The shutter level is controlled by the value of the Shutter property
1 - Auto
The camera controls the shutter level by itself continuously
2 - One push
The camera sets the optimal shutter level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.ShutterControl [= Value]
[C/C++]
HRESULT get_ShutterControl( short *pShutterControl );
HRESULT put_ShutterControl( short ShutterControl );
Data Type [VB]
Integer
Parameters [C/C++]
pShutterControl [out, retval]
Pointer to the current shutter control mode
ShutterControl [in]
The shutter control mode to be set
Return Values
S_OK
Success
E_FAIL
The shutter control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic shutter control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.ShutterControl = 1
Else
Prontocam1.ShutterControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic shutter control.
68
3.1.41. SizeX
Description
Returns or sets the width of the partial scan window.
Syntax
[VB]
objProntocam.SizeX [= Value]
[C/C++]
HRESULT get_SizeX( long *pSizeX );
HRESULT put_SizeX( long SizeX );
Data Type [VB]
Long
Parameters [C/C++]
pSizeX [out,retval]
Pointer to the currently selected image width
SizeX [in]
The image width to be selected
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the current image width to 512:
Prontocam1.SizeX = 512
MsgBox Prontocam1.SizeX
Remarks
Modification of the size of the video frame is available only for partial scan (Format 7) Modes. Only certain values of the
width can be allowed for the partial scan window depending on the camera. If the property is set to a value which is not
supported by the camera, it will be reset to the nearest allowable width.
If the currently selected video mode represents a fixed format, the SizeX property will be readonly and will return the same
value as GetWidth.
69
3.1.42. SizeY
Description
Returns or sets the height of the partial scan window.
Syntax
[VB]
objProntocam.SizeY [= Value]
[C/C++]
HRESULT get_SizeY( long *pSizeY );
HRESULT put_SizeY( long SizeY );
Data Type [VB]
Long
Parameters [C/C++]
pSizeY [out,retval]
Pointer to the currently selected image height
SizeY [in]
The image height to be selected
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the current image height to 512:
Prontocam1.SizeY = 512
MsgBox Prontocam1.SizeY
Remarks
Modification of the size of the video frame is available only for partial scan (Format 7) Modes. Only certain values of the
height can be allowed for the partial scan window depending on the camera. If the property is set to a value which is not
supported by the camera, it will be reset to the nearest allowable height.
If the currently selected video mode represents a fixed format, the SizeY property will be readonly and will return the same
value as GetHeight.
70
3.1.43. StartX
Description
Returns or sets the horizontal offset of the partial scan window.
Syntax
[VB]
objProntocam.StartX [= Value]
[C/C++]
HRESULT get_StartX( long *pStartX );
HRESULT put_StartX( long StartX );
Data Type [VB]
Long
Parameters [C/C++]
pStartX [out,retval]
Pointer to the currently set horizontal ofset
SizeX [in]
The horizontal ofset to be set
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the horizontal ofset of the video window to 64:
Prontocam1.StartX = 64
MsgBox Prontocam1.StartX
Remarks
This property is available only for partial scan (Format 7) Modes and allows you to set the horizontal offset of the top left
corner of the scan window in pixels. Only certain values StartX can be allowed depending on the camera. If the property is
set to a value which is not supported by the camera, it will be reset to the nearest allowable one.
71
3.1.44. StartY
Description
Returns or sets the vertical offset of the partial scan window.
Syntax
[VB]
objProntocam.StartY [= Value]
[C/C++]
HRESULT get_StartY( long *pStartY );
HRESULT put_StartY( long StartY );
Data Type [VB]
Long
Parameters [C/C++]
pStartY [out,retval]
Pointer to the currently set vertical offset
StartY [in]
The vertical offset to be set
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the vertical ofset of the video window to 64 pixels:
Prontocam1.StartY = 64
MsgBox Prontocam1.StartY
Remarks
This property is available only for partial scan (Format 7) Modes and allows you to set the vertical offset of the top left
corner of the scan window in pixels. Only certain values StartY can be allowed depending on the camera. If the property is
set to a value which is not supported by the camera, it will be reset to the nearest allowable one.
72
3.1.45. Trigger
Description
Enables/disables the hardware trigger.
Syntax
[VB]
objProntocam.Trigger [= Value]
[C/C++]
HRESULT get_Trigger ( bool *pTrigger );
HRESULT put_Trigger( bool Trigger );
Data Type [VB]
Boolean
Parameters [C/C++]
pTrigger [out,retval]
Pointer to the Boolean that is TRUE if the trigger mode is enable, or FALSE otherwise
Trigger [in]
Set to TRUE to enable the trigger mode, or set to FALSE otherwise
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example activates the trigger mode:
Prontocam1.Asynch = False
Prontocam1.Trigger = True
MsgBox Prontocam1.Trigger
Remarks
The hardware trigger is typically used with an asynchronously resetable camera. When the Trigger property is enalbed, the
acquisition of a frame will occur upon receiving a signal from an external hardware trigger. Aslo see TriggerMode and
TriggerPolarity. It is recommended to set the Asynch property to FALSE before activating the trigger mode.
73
3.1.46. TriggerCounter
Description
Returns or sets the trigger counter parameter for trigger modes 1 and 2. See TriggerMode for more details.
Syntax
[VB]
objProntocam.TriggerCounter [= Value]
[C/C++]
HRESULT get_TriggerCounter( long *pTriggerCounter );
HRESULT put_TriggerCounter( long TriggerCounter );
Data Type [VB]
Long
Parameters [C/C++]
pTriggerCounter [out,retval]
Pointer to the ordinal number of the currently selected palette
TriggerCounter [in]
The number of the palette to be selected
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the trigger counter to 16
Prontocam1.TriggerCounter = 16
MsgBox Prontocam1.TriggerCounter
Remarks
For more information on the DCAM trigger modes refer to "IIDC 1394-based Digital Camera Specification, Version 1.30"
published by the 1394 Trade Association.
74
3.1.47. 3.1.47 TriggerMode
Description
Returns or sets the trigger mode as defined by DCAM 1.31 specifications. The values from 0 to 3 correspond to the
following modes (the TriggerPolarity is assumed to be set to Low Active):
0 - Mode 0
Camera starts integration of the incoming light from the external trigger input falling edge. Integration time is defined by
the Shutter option.
1 - Mode 1
Camera starts integration of the incoming light from the external trigger input falling edge.Integration time is equal to low
state time of the external trigger input.
2 - Mode 2
Camera starts integration of the incoming light from the external trigger input falling edge. At the TriggerCounter-th
external trigger input falling edge, integration will be stopped.
3 - Mode 3
Internal trigger mode. Camera will issue the trigger signal internally, with a cycle time equal to TriggerCounter times of the
cycle time of the fastest frame. Integration time of the incoming light is defined by the Shutter property.
4 - Mode 4
Multiple shutter preset mode. Camera starts integration of incoming light from first external trigger input falling edge and
exposes incoming light at Shutter time. Repeat this sequence TriggerCounter times and then finish integration.
5 - Mode 5
Multiple shutter pulse width mode. Camera starts integration of incoming light from first external trigger input falling edge
and exposes incoming light until trigger is inactive. Repeat this sequence TriggerCounter times and then finish integration.
Syntax
[VB]
objProntocam.TriggerMode [= Value]
[C/C++]
HRESULT get_TriggerMode( long *pTriggerMode );
HRESULT put_TriggerMode( long TriggerMode );
Data Type [VB]
Long
Parameters [C/C++]
pTriggerMode [out,retval]
Pointer to the ordinal number of the currently selected palette
TriggerMode [in]
The number of the palette to be selected
Return Values
S_OK
Reference 111
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
75
Example
This VB example sets Mode 1 for the trigger input operation.
Prontocam1.TriggerMode = 1
MsgBox Prontocam1.TriggerMode
Remarks
Trigger modes 2, 3, 4 and 5 work in combination with TriggerCounter. If trigger modes 0, 2, and 4 are used with the
software TriggerSource, there is no need to reset the trigger signal (by issuing SoftTrigger with the False argument), as the
trigger will reset itself. For more information on the DCAM trigger modes refer to "IIDC 1394-based Digital Camera
Specification, Version 1.31" published by the 1394 Trade Association.
76
3.1.48. TriggerPolarity
Description
Returns or sets the polarity of the hardware trigger input.
Syntax
[VB]
objProntocam.TriggerPolarity [= Value]
[C/C++]
HRESULT get_TriggerPolarity ( bool *pTriggerPolarity );
HRESULT put_TriggerPolarity( bool pTriggerPolarity );
Data Type [VB]
Boolean
Parameters [C/C++]
pTriggerPolarity [out,retval]
Pointer to the Boolean that is TRUE if the high active trigger input, or FALSE otherwise
TriggerPolarity [in]
Set to TRUE to enable the high active trigger input, or set to FALSE for the low active input
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example sets the trigger input to the high active polarity:
Prontocam1.TriggerPolarity = True
MsgBox Prontocam1.TriggerPolarity
Remarks
When the trigger input is set to the low active polarity, the acquisition of the frame will occur upon a drop of the voltage on
the trigger input. For the high active input, the acquisition will occur upon a raise of the voltage.
77
3.1.49. TriggerSource
Description
Returns or sets the trigger source as defined by DCAM 1.31 specifications.
Syntax
[VB]
objProntocam.TriggerSource [= Value]
[C/C++]
HRESULT get_TriggerSource( long *pTriggerSource );
HRESULT put_TriggerSource( long TriggerSource );
Data Type [VB]
Long
Parameters [C/C++]
pTriggerMode [out,retval]
Pointer to the trigger source ID. The values from 0 to 3 correspond to alternative hardware trigger sources (if available).
The value 7 corresponds to the software trigger.
TriggerMode [in]
ID of the current trigger source
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid property value.
Example
This VB example sets the software source for the trigger input operation.
Prontocam1.TriggerSource = 7
MsgBox Prontocam1.TriggerSource
Remarks
If the software trigger source is selected (TriggerSource=7), use SoftTrigger to generate the software
trigger signal.
78
l
3.1.50. ScrollBars
Description
Enables/disables the scroll bars on the control window.
Syntax
[VB]
objProntocam.ScrollBars [= Value]
[C/C++]
HRESULT get_ScrollBars ( bool *pScrollBars );
HRESULT put_ScrollBars( bool pScrollBars );
Data Type [VB]
Boolean
Parameters [C/C++]
pScro lBars [out,retval]
Pointer to the Boolean that is TRUE if the scroll bars are enable, or FALSE otherwise
ScrollBars [in]
Set to TRUE to enable the scroll bars, or set to FALSE otherwise
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example enables scroll bars on the control window:
Prontocam1.ScrollBars = True
MsgBox Prontocam1.ScrollBars
Remarks
If this property is set to TRUE and the video width or/and height (see SizeX and SizeY) exceed the size of the control
window, a scroll bar(s) will be displayed on the border of the control window allowing you to pan the live video. The current
position of scroll bars can be retrieved or modified via the ScrollX and ScrollY properties. When the scroll bars are moved,
the Scroll event will be raised.
Note that the Acquire and Display properties must be set to TRUE in order for the live video to be
displayed in the control window.
79
3.1.51. SwapBytes
Description
Enables/disables swapping of bytes for 16- and 48-bit video modes.
Syntax
[VB]
objProntocam.SwapBytes [= Value]
[C/C++]
HRESULT get_SwapBytes ( bool *pSwapBytes );
HRESULT put_SwapBytes( bool pSwapBytes );
Data Type [VB]
Boolean
Parameters [C/C++]
pSwapBytes [out,retval]
Pointer to the Boolean that is TRUE if the byte swap is enable, or FALSE otherwise
SwapBytes [in]
Set to TRUE to enable the byte swap mode, or set to FALSE otherwise
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example activates the byte swap mode:
Prontocam1.SwapBytes = True
MsgBox Prontocam1.SwapBytes
Remarks
This property defines the way in which 16-bit pixels are arranged in Prontocam image buffer. If SwapBytes is set to FALSE,
the bytes in each pixel will maintain the order in which they are delivered by the camera. Some cameras however can
render the most significan bits of each pixel in the highorder bytes and the least significant bits in the low-order bytes. If
this happens, the live image will appear scrambled. Setting SwapBytes to TRUE will activate a real-time swap of bytes in
incoming camera frames and restore original pixel values.
Note that this property is availalbe only in 16- and 48-bit video Modes.
80
3.1.52. WhiteBalanceUB
Description
Returns or sets the U or B value of the white color
Syntax
[VB]
objProntocam.WhiteBalanceUB [= Value]
[C/C++]
HRESULT get_WhiteBalanceUB( long *pWhiteBalanceUB );
HRESULT put_WhiteBalanceUB( long WhiteBalanceUB );
Data Type [VB]
Long
Parameters [C/C++]
pWhiteBalanceUB [out,retval]
Pointer to the current U/B value
WhiteBalanceUB [in]
The U/B value to be set
Return Values
S_OK
Success
E_FAIL
The white balance control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following Visual Basic example demonstrates the use of two scroll controls for real-time adjustment of the white
balance
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.WhiteBalanceUB
HScroll1.Min = Prontocam1.GetWhiteBalanceMin
HScroll1.Max = Prontocam1.GetWhiteBalanceMax
HScroll2.Value = Prontocam1.WhiteBalanceVR
HScroll2.Min = Prontocam1.GetWhiteBalanceMin
HScroll2.Max = Prontocam1.GetWhiteBalanceMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.WhiteBalanceUB = HScroll1.Value
End Sub
Private Sub HScroll2_Scroll()
Prontocam1.WhiteBalanceVR = HScroll2.Value
End Sub
81
Remarks
This property changes the tint of the white color along the yellow-blue axis by modifying U component in the YUV mode or
B component in the RGB mode. The valid property range is reported by the GetWhiteBalanceMin and GetWhiteBalanceMax
methods. Note that the property is available only if the currently selected camera is a color one and supports white balance
control.
82
3.1.53. WhiteBalanceVR
Description
Returns or sets the V or R value of the white color
Syntax
[VB]
objProntocam.WhiteBalanceVR [= Value]
[C/C++]
HRESULT get_WhiteBalanceVR( long *pWhiteBalanceVR );
HRESULT put_WhiteBalanceVR( long WhiteBalanceVR );
Data Type [VB]
Long
Parameters [C/C++]
pWhiteBalanceVR [out,retval]
Pointer to the current V/R value
WhiteBalanceVR [in]
The V/R value to be set
Return Values
S_OK
Success
E_FAIL
The white balance control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following Visual Basic example demonstrates the use of two scroll controls for real-time adjustment of the white
balance
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.WhiteBalanceUB
HScroll1.Min = Prontocam1.GetWhiteBalanceMin
HScroll1.Max = Prontocam1.GetWhiteBalanceMax
HScroll2.Value = Prontocam1.WhiteBalanceVR
HScroll2.Min = Prontocam1.GetWhiteBalanceMin
HScroll2.Max = Prontocam1.GetWhiteBalanceMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.WhiteBalanceUB = HScroll1.Value
End Sub
Private Sub HScroll2_Scroll()
Prontocam1.WhiteBalanceVR = HScroll2.Value
End Sub
Remarks
83
This property changes the tint of the white color along the cyan-red axis by modifying V component in the YUV mode or R
component in the RGB mode. The valid property range is reported by the GetWhiteBalanceMin and GetWhiteBalanceMax
methods. Note that the property is available only if the currently selected camera is a color one and supports white balance
control.
84
t
3.1.54. WhiteBalanceControl
Description
Returns or sets the white balance control mode. The values from 0 to 2 correspond to the following
modes:
0 - Manual
The white balance levels is controlled by the values of the WhiteBalanceUB and WhiteBalanceVR properties
1 - Auto
The camera controls the white balance levels by itself continuously
2 - One push
The camera sets the optimal white balance levels by itself and returns to the manual mode
Syntax
[VB]
objProntocam.WhiteBalanceControl [= Value]
[C/C++]
HRESULT get_WhiteBalanceControl( short *pWhiteBalanceControl );
HRESULT put_WhiteBalanceControl( short WhiteBalanceControl );
Data Type [VB]
Integer
Parameters [C/C++]
pWhiteBalanceControl [out, retval]
Pointer to the current white balance control mode
WhiteBalanceCon rol [in]
The white balance control mode to be set
Return Values
S_OK
Success
E_FAIL
The white balance control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic white balance
control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.WhiteBalanceControl = 1
Else
Prontocam1.WhiteBalanceControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic white balance control.
85
3.1.55. Zoom
Description
Returns or sets the row value of the zoom
Syntax
[VB]
objProntocam.Zoom [= Value]
[C/C++]
HRESULT get_Zoom( long *pZoom );
HRESULT put_Zoom( long Zoom );
Data Type [VB]
Long
Parameters [C/C++]
pZoom [out,retval]
Pointer to the current zoom value
Zoom [in]
The zoom value to be set
Return Values
S_OK
Success
E_FAIL
The zoom control is not available for the selected camera
E_INVALIDARG
The value is out of range
Example
The following VB example demonstrates the use of a scroll control for real-time adjustment of the camera's zoom.
Private Sub Form_Load()
Prontocam1.Acquire=True
HScroll1.Value = Prontocam1.Zoom
HScroll1.Min = Prontocam1.GetZoomMin
HScroll1.Max = Prontocam1.GetZoomMax
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.Zoom = HScroll1.Value
End Sub
Remarks
This property provides adjustment of the optical zoom of the camera lens. The valid property range is reported by the
GetZoomMin and GetZoomMax methods. Note that the property is available only if the currently selected camera is
equipped with a motorized lens supports software zoom control.
86
t
3.1.56. ZoomControl
Description
Returns or sets the zoom control mode. The values from 0 to 2 correspond to the following modes:
0 - Manual
The zoom level is controlled by the value of the Zoom property
1 - Auto
The camera controls the zoom level by itself continuously
2 - One push
The camera sets the optimal zoom level by itself and returns to the manual mode
Syntax
[VB]
objProntocam.ZoomControl [= Value]
[C/C++]
HRESULT get_ZoomControl( short *pZoomControl );
HRESULT put_ZoomControl( short ZoomControl );
Data Type [VB]
Integer
Parameters [C/C++]
pZoomControl [out, retval]
Pointer to the current zoom control mode
ZoomCon rol [in]
The zoom control mode to be set
Return Values
S_OK
Success
E_FAIL
The zoom control is not available for the selected camera
Example
The following VB example demonstrates the use of a checkbox to switch between the manual and automatic zoom control.
Private Sub Check1_Click()
If Check1.Value = 1 Then
Prontocam1.ZoomControl = 1
Else
Prontocam1.ZoomControl = 0
End If
End Sub
Remarks
The property is available only if the currently selected camera supports automatic zoom control.
87
3.2. Methods Prontocam control provides the following methods to a container application:
Grab Grabs a single frame into the internal memory
SoftTrigger Sets/resets the software trigger signal
GetCameraList Returns the list of DCAM cameras connected to the 1394 board
GetModeList Returns the list of video mode supported by the currently selected camera
GetRateList Returns the list of frame rates supported by the currently selected video mode
GetWidth Returns the maximum horizontal size of the video frame
GetHeight Returns the maximum vertical size of the video frame
GetBytesPerPixel Returns the number of bytes per pixel in the video
GetTriggerInfo Returns the information related to triggering
GetF7Info Returns the information related to Format 7 (partial scan) video modes
GetPixel Returns the pixel value at the specified coordinates
GetRGBPixel Returns the array of RGB values at the specified coordinates
GetImageLine Returns the array of pixel values in the specified horizontal line
GetComponentLine Returns the array of pixel values of the color component in the specified horizontal line
GetImageWindow Returns the 2D array of pixel values in the specified rectangular area of the current frame
SetImageWindow Copies the 2D array of pixel values to the selected window of the current frame
GetImageData Returns the two dimensional array of pixel values in the currently acquired frame
GetComponentData Returns the two dimensional array of pixel values in the specified color component
GetRawData Returns the 2D array of raw values in the currently acquired data buffer
GetImagePointer Returns the memory pointer to the specified pixel
GetDIB Returns the handler to a Device Independent Bitmap
GetPicture Returns the Picture object corresponding to the currently acquired frame
SaveImage Saves the current frame buffer in the specified image file
StartCapture Starts video capture to the specified AVI file or series of image files
StopCapture Stops video capture
88
3.2.1. Draw
Description
Displays the current frame in Prontocam window.
Syntax
[VB]
objProntocam.Draw
[C/C++]
HRESULT Draw();
Parameters
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameAcquired event to invert pixel value in the bottom left corner of the current frame and
display the processed frame in real time.
Private Sub Form_Load()
Prontocam1.Display = False
Prontocam1.Acquire = True
End Sub
Private Sub Prontocam1_FrameAcquired()
a = Prontocam1.GetImageData
For x = 0 To 200
For y = 0 To 200
a(x, y) = 255 - a(x, y)
Next
Next
Prontocam1.Draw
End Sub
Remarks
Use this method when the automatic live display is disabled (Display is set to False). This is typically done when you want
to perform real time image processing and display the processed image in the control window.
89
3.2.2. GetBrightnessMin
Description
Returns the minimum value of the Brightness property.
Syntax
[VB]
Value=objProntocam.GetBrightnessMin()
[C/C++]
HRESULT GetBrightnessMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum brightness value
Return Values
S_OK
Success
E_FAIL
The brightness control is not available for the selected camera
Example
This VB example uses the minimum and maximum brightness values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetBrightnessMin
Slider1.Max = Prontocam1.GetBrightnessMax
Slider1.Value = Prontocam1.Brightness
End Sub
Remarks
If the currently selected camera doesn't support software brightness control, the method will generate an error.
90
3.2.3. GetBrightnessMax
Description
Returns the maximum value of the Brightness property.
Syntax
[VB]
Value=objProntocam.GetBrightnessMax()
[C/C++]
HRESULT GetBrightnessMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum brightness value
Return Values
S_OK
Success
E_FAIL
The brightness control is not available for the selected camera
Example
This VB example uses the minimum and maximum brightness values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetBrightnessMin
Slider1.Max = Prontocam1.GetBrightnessMax
Slider1.Value = Prontocam1.Brightness
End Sub
Remarks
If the currently selected camera doesn't support software brightness control, the method will generate an error.
91
3.2.4. GetBytesPerPixel
Description
Returns the number of bytes per pixel for the current video Format.
Syntax
[VB]
Value=objProntocam.GetBytesPerPixel()
[C/C++]
HRESULT GetBytesPerPixel(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out,retval]
Pointer to the number of bytes per pixel
Return Values
S_OK
Success
E_FAIL
Failure
Example
This VB example reads and displays the pixel depth:
value=Prontocam1.GetBytesPerPixel()
MsgBox value
Remarks
The method returns the pixel depth of the internal image buffer of Prontocam control which can be different from the pixel
depth of the image ouputed by the camera. For instance, the YUV 4:1:1 and YUV 4:2:2 images are always converted to the
RGB 8:8:8 video, therefore the number of bytes per pixel reported for these formats will be 3. Also, when the Bayer color
conversion is activated for Mono 8 and and Mono 16 formats, the resulting video will have 3 or 6 bytes per pixel accordingly.
92
3.2.5. GetCameraList
Description
Returns the array of strings containing the names of DCAM cameras connected to the 1394 board.
Syntax
[VB]
Value=objProntocam.GetCameraList()
[C/C++]
HRESULT GetCameraList( VARIANT* pList );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
pList [out,retval]
Pointer to the SAFEARRAY containing camera names
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example initializes a combo box with camera names and uses it to switch between the
cameras:
Private Sub Form_Load()
CamLst = Prontocam1.GetCameraList
For i = 0 To UBound(CamLst)
Combo1.AddItem (CamLst(i))
Next
Combo1.ListIndex = 0
Prontocam1.Acquire = True
End Sub
Private Sub Combo1_Click()
Prontocam1.Camera = Combo1.ListIndex
End Sub
Remarks
The index of an element in the camera list can be used as an argument of the Camera property to select a specific camera.
93
3.2.6. GetComponentData
Description
Returns the two-dimensional array of pixel values in the specified color component of the current frame.
Syntax
[VB]
Value=objProntocam.GetComponentData( Component )
[C/C++]
HRESULT GetComponentData( short Component, VARIANT* pArray );
Data Types [VB]
Y: Integer
Component: Integer
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
Component [in]
The index of the selected color component (0 - Red, 1 - Green, 2 - Blue)
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values in the frame
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input argument.
Example
This VB example grabs a frame, retrieves its green component and displays the value of the specified element of the array.
Dim pix as Long
Prontocam1.Grab
DataArray=Prontocam1.GetComponentData(1)
x=16
y=32
pix=DataArray(x,y)
if pix < 0 then
pix=65535-pix
endif
Remarks
The array returned by GetComponentData has the dimensions 0 to SizeX - 1, 0 to SizeY - 1. The type of data in the array
depends on the format of the video acquired. For the 24-bit video the method will return an array of bytes. If the video is of
the high-bit depth, the array will contain integer (word) values.
Note that modifying elements of the array will not change actual pixel values in the frame buffer. The image data in the
array are stored in the standard order from top to bottom, therefore the first element of the array is first pixel of the top
line of the image. This is opposite to the order of raws in the array returned by GetImageData.
94
If the video has a grayscale format, the Component parameter will have no effect and the output array will contain the
luminance data. For integer (word) type of data you can receive negative numbers if pixel values exceed 32767. In C
and C# you can convert signed integers to unsigned ones by using data casting. To get rid of negative values in VB and
Delphi, subract them from 65535 (see the example above).
95
3.2.7. GetComponentLine
Description
Returns the array of pixel values of the specified color component at the specified horizontal line of the current frame.
Syntax
[VB]
Value=objProntocam.GetComponentLine( Y, Component )
[C/C++]
HRESULT GetComponentLine( short Y, short Component, VARIANT* pArray );
Data Types [VB]
Y: Integer
Component: Integer
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
Y [in]
The y-coordinate of the line in the image
Component [in]
The index of the selected color component (0 - Red, 1 - Green, 2 - Blue)
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values in the line
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input argument.
Example
This VB example grabs a frame, retrieves the 32th row of green pixels and displays the value of 10th pixel in the row.
Prontocam1.Grab
Line=Prontocam1.GetComponentLine(32,2)
MsgBox Line(10)
Remarks
The array returned by GetComponentLine has the dimension range from 0 to SizeX - 1. The type of data in the array
depends on the format of the video acquired. For the 24-bit video the method will return an array of bytes. If the video is of
the high-bit depth, the array will contain integer (word) values. If the video has a grayscale format, the Component
parameter will have no effect and the output array will contain the luminance data (see GetLine).
Note that modifying elements of the array will not change actual pixel values in the frame buffer.The value of the y
coordinate must not exceed the height of the video frame, or the error will occur.
96
3.2.8. 3.2.8 GetDIB
Description
Returns the handler to a Device Independent Bitmap.
Syntax
[VB]
Value=objProntocam.GetDIB()
[C/C++]
HRESULT GetDIB(HGLOBAL* pDib);
Data Types [VB]
Return value: long
Parameters [C/C++]
X [in]
The x-coordinate of the pixel
Y [in]
The y-coordinate of the pixel
pDib
Pointer to the handler to Prontocam's display DIB
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This C example demonstrates how to retrieve and display Prontocam's DIB
BITMAPINFO *pDIB;
pProntocam->GetDIB((ULONG*)&pDIB);
RECT rect; long sx,sy;
GetWindowRect(hWnd,&rect);
pProntocam->GetWidth(&sx);
pProntocam->GetHeight(&sy);
BYTE* pData=(BYTE*)pDIB+sizeof(BITMAPINFOHEADER) + pDIB-
>bmiHeader.biClrUsed * sizeof(RGBQUAD);
SetDIBitsToDevice(hDC, 0, 0, sx, sy, 0, 0, 0, sy, pData, pDIB,
DIB_RGB_COLORS);
Remarks
The GetDIB method provides the most efficient way to display the internal image buffer when you do not want to use
Prontocam's live display. Prontocam uses packed DIBs, the pixel data immediately following the BITMAPINFO structure. The
method returns a GlobalAlloc handler which contains the pointer to a DIB. The application must not free the global handler
after using the DIB data.
Note that a DIB contains only 8- and 24-bit pixel values, even if the current video mode is a 16- or 48- bit one. To access
the actual pixel data, use the GetImageData or GetPointer methods.
97
3.2.9. GetExposureMin
Description
Returns the minimum value of the AutoExposureRef property.
Syntax
[VB]
Value=objProntocam.GetExposureMin()
[C/C++]
HRESULT GetExposureMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum auto exposure reference value
Return Values
S_OK
Success
E_FAIL
The auto exposure control is not available for the selected camera
Example
This VB example uses the minimum and maximum auto exposure reference values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetExposureMin
Slider1.Max = Prontocam1.GetExposureMax
Slider1.Value = Prontocam1.AutoExposureRef
End Sub
Remarks
If the currently selected camera doesn't support auto exposure control, the method will generate an error.
98
3.2.10. GetExposureMax
Description
Returns the maximum value of the AutoExposureRef property.
Syntax
[VB]
Value=objProntocam.GetExposureMax()
[C/C++]
HRESULT GetExposureMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum auto exposure reference value
Return Values
S_OK
Success
E_FAIL
The auto exposure control is not available for the selected camera
Example
This VB example uses the minimum and maximum auto exposure reference values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetExposureMin
Slider1.Max = Prontocam1.GetExposureMax
Slider1.Value = Prontocam1.AutoExposureRef
End Sub
Remarks
If the currently selected camera doesn't support auto exposure control, the method will generate an
error.
99
3.2.11. GetF7Info
Description
Returns the array of long values containing the information releated to Format 7 (partial scan) video
modes .
Syntax
[VB]
Value=objProntocam.GetF7Info()
[C/C++]
HRESULT GetF7Info( VARIANT* pInfo );
Data Types [VB]
Return value: Variant (Array)
Parameters [C/C++]
pInfo [out,retval]
Pointer to the SAFEARRAY containing the following long values in the listed order:
- maximum height of the partial scan in pixels
- maximum width of the partial scan in pixels
- minimum interval at which partial scan size can be changed horizontally
- minimum interval at which partial scan size can be changed vertically
- minimum interval at which the offset of partial scan can be changed horizontally
- minimum interval at which the offset of partial scan can be changed vertically
- maximum number of bytes per isochronous packet that can be set
- minimum number of bytes per isochronous packet and minimum interval at which it can be
changed
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example retrieves a packet size information for the current F7 mode and initializes a scroll bar
to conrol the packet size:
Private Sub Form_Load()
F7Info=Prontocam1.GetF7Info
HScroll1.Min = F7Info(6)
HScroll1.Max = F7Info(7)
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.PacketSize = HScroll1.Value
End Sub
Remarks
Use this method to implement custom controls for partial scan size, offset and packet size.
100
3.2.12. GetFocusMin
Description
Returns the minimum value of the Focus property.
Syntax
[VB]
Value=objProntocam.GetFocusMin()
[C/C++]
HRESULT GetFocusMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum focus value
Return Values
S_OK
Success
E_FAIL
The focus control is not available for the selected camera
Example
This VB example uses the minimum and maximum focus values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetFocusMin
Slider1.Max = Prontocam1.GetFocusMax
Slider1.Value = Prontocam1.Focus
End Sub
Remarks
If the currently selected camera doesn't support software focus control, the method will generate an error.
101
3.2.13. GetFocusMax
Description
Returns the maximum value of the Focus property.
Syntax
[VB]
Value=objProntocam.GetFocusMax()
[C/C++]
HRESULT GetFocusMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum focus value
Return Values
S_OK
Success
E_FAIL
The focus control is not available for the selected camera
Example
This VB example uses the minimum and maximum focus values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetFocusMin
Slider1.Max = Prontocam1.GetFocusMax
Slider1.Value = Prontocam1.Focus
End Sub
Remarks
If the currently selected camera doesn't support software focus control, the method will generate an error.
102
3.2.14. GetGainMin
Description
Returns the minimum value of the Gain property.
Syntax
[VB]
Value=objProntocam.GetGainMin()
[C/C++]
HRESULT GetGainMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum gain value
Return Values
S_OK
Success
E_FAIL
The gain control is not available for the selected camera
Example
This VB example uses the minimum and maximum gain values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetGainMin
Slider1.Max = Prontocam1.GetGainMax
Slider1.Value = Prontocam1.Gain
End Sub
Remarks
If the currently selected camera doesn't support software gain control, the method will generate an error.
103
3.2.15. GetGainMax
Description
Returns the maximum value of the Gain property.
Syntax
[VB]
Value=objProntocam.GetGainMax()
[C/C++]
HRESULT GetGainMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum gain value
Return Values
S_OK
Success
E_FAIL
The gain control is not available for the selected camera
Example
This VB example uses the minimum and maximum gain values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetGainMin
Slider1.Max = Prontocam1.GetGainMax
Slider1.Value = Prontocam1.Gain
End Sub
Remarks
If the currently selected camera doesn't support software gain control, the method will generate an error.
104
3.2.16. GetGammaMin
Description
Returns the minimum value of the Gamma property.
Syntax
[VB]
Value=objProntocam.GetGammaMin()
[C/C++]
HRESULT GetGammaMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum gamma value
Return Values
S_OK
Success
E_FAIL
The gamma control is not available for the selected camera
Example
This VB example uses the minimum and maximum gamma values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetGammaMin
Slider1.Max = Prontocam1.GetGammaMax
Slider1.Value = Prontocam1.Gamma
End Sub
Remarks
If the currently selected camera doesn't support software gamma control, the method will generate an error.
105
3.2.17. GetGammaMax
Description
Returns the maximum value of the Gamma property.
Syntax
[VB]
Value=objProntocam.GetGammaMax()
[C/C++]
HRESULT GetGammaMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum gamma value
Return Values
S_OK
Success
E_FAIL
The gamma control is not available for the selected camera
Example
This VB example uses the minimum and maximum gamma values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetGammaMin
Slider1.Max = Prontocam1.GetGammaMax
Slider1.Value = Prontocam1.Gamma
End Sub
Remarks
If the currently selected camera doesn't support software gamma control, the method will generate an error.
106
3.2.18. GetHeight
Description
Returns the maximum vertical size of the video frame for the currently selected Format.
Syntax
[VB]
Value=objProntocam.GetHeight()
[C/C++]
HRESULT GetHeight(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum gain value
Return Values
S_OK
Success
E_FAIL
Failure
Example
This VB example uses the minimum video width and height to initialize slider controls:
Private Sub Form_Load()
Slider1.Min = 0
Slider1.Max = Prontocam1.GetWidth
Slider2.Min = 0
Slider2.Max = Prontocam1.GetHeight
Slider1.Value = Prontocam1.SizeX
Slider2.Value = Prontocam1.SizeY
End Sub
Remarks
This method allows you to determine the maximum size of the video frame in a user-defined format. If the currently
selected format is a fixed one, the value returned by the method will be identical to the value returned by the SizeY
property. See Format for more details.
107
3.2.19. GetHueMin
Description
Returns the minimum value of the Hue property.
Syntax
[VB]
Value=objProntocam.GetHueMin()
[C/C++]
HRESULT GetHueMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum hue value
Return Values
S_OK
Success
E_FAIL
The hue control is not available for the selected camera
Example
This VB example uses the minimum and maximum hue values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetHueMin
Slider1.Max = Prontocam1.GetHueMax
Slider1.Value = Prontocam1.Hue
End Sub
Remarks
If the currently selected camera doesn't support software hue control, the method will generate an error.
108
3.2.20. GetHueMax
Description
Returns the maximum value of the Hue property.
Syntax
[VB]
Value=objProntocam.GetHueMax()
[C/C++]
HRESULT GetHueMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum hue value
Return Values
S_OK
Success
E_FAIL
The hue control is not available for the selected camera
Example
This VB example uses the minimum and maximum hue values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetHueMin
Slider1.Max = Prontocam1.GetHueMax
Slider1.Value = Prontocam1.Hue
End Sub
Remarks
If the currently selected camera doesn't support software hue control, the method will generate an error.
109
3.2.21. GetImageData
Description
Returns the two-dimensional array of pixel values in the currently acquired frame.
Syntax
[VB]
Value=objProntocam.GetImageData
[C/C++]
HRESULT GetImageData( VARIANT* pArray );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values in the frame
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameAcquired event to invert pixel value in the bottom left corner of the current frame and
display the processed frame in real time.
Private Sub Form_Load()
Prontocam1.Display = False
Prontocam1.Acquire = True
End Sub
Private Sub Prontocam1_FrameAcquired()
a = Prontocam1.GetImageData
For x = 0 To 200
For y = 0 To 200
a(x, y) = 255 - a(x, y)
Next
Next
Prontocam1.Draw
End Sub
Remarks
GetImageData does not copy the image data, so the array returned contains the actual image buffer of the currently
acquired frame. Modifying elements of the array will change actual pixel values in the image buffer. This can be used to
perform custom image processing and display a processed image in real time. Note that this feature cannot be used in .NET
as its framework creates a copy of the array returned. For direct access to Prontocam's image frame in VB.NET and C# use
GetImagePointer.Image in Prontocam are stored bottom up, therefore the first element of the array is first pixel of the
bottom line of the image.The type of data and dimensions of the array returned by GetImageData depends on the output
110
format of the video, its horizontal width SizeX and the number of lines acquired, as specified in the following table:
Format Data type Dimensions
8-bit monochrome Byte 0 to SizeX -1, 0 to Lines – 1
16-bit gray monochrome Integer(word) 0 to SizeX -1, 0 to Lines – 1
24-bit RGB Byte 0 to SizeX * 3 - 1, 0 to Lines – 1
48-bit RGB Integer(word) 0 to SizeX * 3 - 1, 0 to Lines - 1
Note that Prontocam automatically converts YUV video outputed by a camera to 24-bit RGB.
For integer (word) type of data you can receive negative numbers if pixel values exceed 32767. In C and C# you can
convert signed integers to unsigned ones by using data casting. To get rid of negative values in VB and Delphi, subract
them from 65535.
111
3.2.22. GetImageLine
Description
Returns the array of pixel values at the specified horizontal line of the currently acquired frame.
Syntax
[VB]
Value=objProntocam.GetImageLine( Y )
[C/C++]
HRESULT GetImageLine( short Y, VARIANT* pArray );
Data Types [VB]
Y: Integer
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
Y [in]
The y-coordinate of the line in the image
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values in the line
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input argument.
Example
This VB example grabs a frame, retrieves the 33th row of pixels and displays the value of 11th pixel in the row.
Dim pix as Long
Prontocam1.Grab
Line=Prontocam1.GetImageLine(32)
pix=Line(10)
if pix < 0 then
pix=65535-pix
endif
MsgBox Line(10)
Remarks
The array returned by GetImageLine is a copy of the actual raw of pixels. Modifying elements of the array will not change
actual pixel values in the frame buffer. The type of data and dimension of the array returned by GetImageLine depends
on the output format of the video as specified in the following table:
Format Data type Dimension
8-bit monochrome Byte 0 to SizeX - 1
16-bit monochrome Integer (word) 0 to SizeX - 1
24-bit RGB Byte 0 to SizeX * 3 - 1
112
48-bit RGB Integer (word) 0 to SizeX * 3 - 1
Note that Prontocam automatically converts YUV video outputed by a camera to 24-bit RGB. The value of the y coordinate
must not exceed the height of the video frame, or the error will occur. For integer (word) type of data you can receive
negative numbers if pixel values exceed 32767. In C and C# you can convert signed integers to unsigned ones by using
data casting. To get rid of negative values in VB and Delphi, subract them from 65535 (see example above).
113
3.2.23. GetImagePointer
Description
Returns the pointer to the pixel at the specified coordinates of the current frame.
Syntax
[VB]
Value=objProntocam.GetImagePointer( X, Y )
[C/C++]
HRESULT GetImagePointer( short X, short Y, VARIANT* pValue );
Data Types [VB]
X: Integer
Y: Integer
Return value: Variant (pointer)
Parameters [C/C++]
X [in]
The x-coordinate of the pixel
Y [in]
The y-coordinate of the pixel
pValue [out,retval]
Pointer to the variant contating the pointer to the specified memory location
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input arguments.
Example
This C++ example grabs a frame, retrieves a pointer to the 32th line in the frame memory and copies the pixels values into
a byte array . A wrapper class CProntocam is used to access the Prontocam
control:
BYTE line[4096];
int iWidth=m_Prontocam.GetSizeX;
m_Prontocam.Grab()
VARIANT v=m_Prontocam.GetImagePointer(0,32);
BYTE* ptr=Prontocam1.GetImagePointer(0,32);
memcpy(&line,v.pcVal,iWidth);
This C# example uses the FrameAcquired event to retrieve a pointer to the 32th line in the frame memory and change pixel
values in the line to zeros:
private void axProntocam1_FrameAcquired(object sender,
AxPRONTOCAMLib._IProntocamEvents_FrameAcquiredEvent e)
{
int sx=axProntocam1.SizeX;
114
object obj=axProntocam1.GetImagePointer(0, 32);
int a = (int)obj;
byte* ptr= (byte*)a;
for (int x=0; x<sx; x++, ptr++)
*ptr=0;
}
Remarks
The GetImagePointer method provides the most efficient way to quickly access the internal image
buffer in pointer-aware programming languages. Unlike GetImageData, this method doesn't modify
original pixel values of high-bit depth images. The number of bytes in each line of the image buffer
depends on the format and horizontal size of the video as specified in the following table:
Format Line width in bytes
8-bit monochrome SizeX
16-bit gray monochrome SizeX * 2
24-bit RGB SizeX * 3
48-bit RGB SizeX * 6
Note that Prontocam automatically converts YUV video outputed by a camera to 24-bit RGB.
The values of the x and y coordinates must not exceed the width and height of the video frame, or the error will occur.
115
3.2.24. GetImageWindow
Description
Returns the two-dimensional array of pixel values corresponding to the selected window in the currently acquired frame.
Syntax
[VB]
Value=objProntocam.GetImageWindow (X, Y, Width, Height)
[C/C++]
HRESULT GetImageWindow( short X, short Y, short Width, short Height,
VARIANT* pArray );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
X [in], Y[in]
The x- and y-coordinates of the top left pixel of the window in the entire frame
Width [in], Height [in]
The horizontal and vertical size of the window in pixels.
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values in the frame
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameAcquired event to increase the brightness in the central area of the live image:
Private Sub Form_Load()
Prontocam1.Display = False
Prontocam1.Acquire = True
End Sub
Private Sub Prontocam1_FrameAcquired()
xc = Prontocam1.SizeX / 2
yc = Prontocam1.SizeY / 2
w = Prontocam1.GetImageWindow(xc - 70, yc - 50, 140, 100)
For y = 0 To UBound(w, 2)
For x = 0 To UBound(w, 1)
pix = w(x, y) + 50
If pix > 255 Then
pix = 255
End If
w(x, y) = pix
Next
Next
116
Prontocam1.SetImageWindow xc - 70, yc - 50, w
Prontocam1.Draw
End Sub
Remarks
The image data in the array are stored in the standard order from top to bottom, therefore the first element of the array is
the top left pixel of the window. This is opposite to the order of raws in the arrays returned by GetImageData. The type of
data and dimensions of the array returned by GetImageWindow depends on the output format of the video, the width
and height of the window and the number of lines acquired, as specified in the following table:
Format Data type Dimensions
8-bit monochrome Byte 0 to Width -1, 0 to Height - 1
16-bit gray monochrome Integer(word) 0 to Width-1, 0 to Height – 1
24-bit RGB Byte 0 to Width * 3 - 1, 0 to Height – 1
48-bit RGB Integer(word) 0 to Width * 3 - 1, 0 to Height – 1
Format Data type Dimensions
If the dimensions of the window are too large to accomodate the frame size, they will be clipped to the frame boundaries.
For integer (word) type of data you can receive negative numbers if pixel values exceed 32767. In C and C# you can
convert signed integers to unsigned ones by using data casting. To get rid of negative values in VB and Delphi, subract
them from 65535.
Note that modifying elements of the array will not change actual pixel values in the frame buffer. Use SetImageWindow to
transfer pixel values into Prontocam.
117
3.2.25. GetIrisMin
Description
Returns the minimum value of the Iris property.
Syntax
[VB]
Value=objProntocam.GetIrisMin()
[C/C++]
HRESULT GetIrisMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out,retval]
Pointer to the minimum iris value
Return Values
S_OK
Success
E_FAIL
The iris control is not available for the selected camera
Example
This VB example uses the minimum and maximum iris values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetIrisMin
Slider1.Max = Prontocam1.GetIrisMax
Slider1.Value = Prontocam1.Iris
End Sub
Remarks
If the currently selected camera doesn't support software iris control, the method will generate an error.
118
3.2.26. GetIrisMax
Description
Returns the maximum value of the Iris property.
Syntax
[VB]
Value=objProntocam.GetIrisMax()
[C/C++]
HRESULT GetIrisMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out,retval]
Pointer to the maximum iris value
Return Values
S_OK
Success
E_FAIL
The iris control is not available for the selected camera
Example
This VB example uses the minimum and maximum iris values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetIrisMin
Slider1.Max = Prontocam1.GetIrisMax
Slider1.Value = Prontocam1.Iris
End Sub
Remarks
If the currently selected camera doesn't support software iris control, the method will generate an error.
119
3.2.27. GetIsoSpeed
Description
Returns the camera's isochronous transmission speed in Mbps/sec.
Syntax
[VB]
value=objProntocam.GetIsoSpeed
[C/C++]
HRESULT GetIsoSpeed( short* pSpeed );
Data Types [VB]
Return value: Integer
Parameters [C/C++]
pSpeed [in]
Pointer to the isochronous transmission speed.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example displays the transmission speed of the camera:
speed=Prontocam1.GetIsoSpeed
MsgBox speed
Remarks
Possible return values for this method are 100, 200, 400, 800, 1600 and 3200.
120
3.2.28. GetMaxChannel
Description
Returns the maximum index of the memory channels available for the current camera.
Syntax
[VB]
value=objProntocam.GetMaxChannel
[C/C++]
HRESULT GetMaxChannel( short* pChannel );
Data Types [VB]
Return value: Integer
Parameters [C/C++]
pChannel [in]
Pointer to the maximum index of the memory channels.
Example
This VB example retrieves the number of memory channels:
channels=Prontocam1.GetMaxChannel
Remarks
If this method returns zero, then user's memory channels are not supported for the current camera.
For more details see LoadChannel and SaveChannel.
121
3.2.29. GetModeList
Description
Returns the array of strings containing the Descriptions of video modes supported by the currently selected camera.
Syntax
[VB]
Value=objProntocam.GetModeList()
[C/C++]
HRESULT GetModeList( VARIANT* pList );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
pList [out,retval]
Pointer to the SAFEARRAY containing available modes
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example initializes a combo box with the Descriptions of available video modes and uses it to select a specific
mode:
Private Sub Form_Load()
ModeLst = Prontocam1.GetModeList
For i = 0 To UBound(ModeLst)
Combo1.AddItem (ModeLst(i))
Next
Combo1.ListIndex = 0
Prontocam1.Acquire = True
End Sub
Private Sub Combo1_Click()
Prontocam1.Mode = Combo1.ListIndex
End Sub
Remarks
The index of an element in the mode list can be used as an argument of the Mode property to select a specific video mode.
122
t
t
3.2.30. GetPicture
Description
Returns a Picture object created from the currently acquired frame.
Syntax
[VB]
Value=objProntocam.GetPicture()
[C/C++]
HRESULT GetPicture(IPictureDisp* *pPicture);
Data Types [VB]
Return value: Picture
Parameters [C/C++]
pPic ure
Pointer to the IPic ureDisp interface object
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameAcquired event to display a live video in a PictureBox:
Private Sub Prontocam1_FrameAcquired(ByVal Lines As Integer)
Picture1.Picture=Prontocam1.GetPicture
End Sub
Remarks
The GetPicture method provides the most convinient graphic interface to Prontocam internal image and allows you to
display the last acquired frame in popular graphic controls such as PictureBox. Note that a Picture object contains only 8-bit
pixel values, even if the current video mode is a 16- or 48-bit one. To access the actual pixel data, use the GetImageData
or GetPointer methods.
123
3.2.31. GetPixel
Description
Returns the pixel value at the specified coordinates.
Syntax
[VB]
Value=objProntocam.GetPixel( X, Y )
[C/C++]
HRESULT GetPixel( short X, short Y, long* pValue );
Data Types [VB]
X: Integer
Y: Integer
Return value: Long
Parameters [C/C++]
X [in]
The x-coordinate of the pixel
Y [in]
The y-coordinate of the pixel
pValue [out,retval]
Pointer to the pixel's value
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input arguments.
Example
This VB example grabs a frame and displays the value of the pixel at the specified coordinates.
Prontocam1.Grab
value=Prontocam1.GetPixel(64,32)
MsgBox value
Remarks
The value returned by GetPixel depends on the format of the video acquired. For monochrome video the method will
retrieve the data from the internal image memory. For the color video the RGB data in the specified coordinates will be
converted to the luminance using the formula: L=(R+G+B) / 3.
The values of the x and y coordinates must not exceed the width and height of the video frame, or the error will occur.
124
3.2.32. GetRateList
Description
Returns the array of floating point values containing the frame rates available for the current video mode.
Syntax
[VB]
Value=objProntocam.GetRateList()
[C/C++]
HRESULT GetRateList( VARIANT* pList );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
pList [out,retval]
Pointer to the SAFEARRAY containing available frame rates
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example initializes a combo box with the available frame rates and uses it to select a specific rate:
Private Sub Form_Load()
RateLst = Prontocam1.GetRateList
For i = 0 To UBound(RateLst)
Combo1.AddItem (RateLst(i))
Next
Combo1.ListIndex = 0
Prontocam1.Acquire = True
End Sub
Private Sub Combo1_Click()
Prontocam1.Rate = Combo1.ListIndex
End Sub
Remarks
DCAM compliant cameras support the following predefined frame rates: 1.875 fps, 3.75 fps, 7.5 fps, 15 fps, 30 fps, 60 fps.
Additional frame rates can be provided by the camera manufacturer. See Rate for more details.
125
t
3.2.33. GetRawData
Description
Returns the two-dimensional array of values in the currently acquired data buffer or pointer to this buffer.
Syntax
[VB]
Value=objProntocam.GetRawData ([isPointer=False])
[C/C++]
HRESULT GetRawData( bool isPointer, VARIANT* pArray );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
isPointer [in]
If false returns the array of raw data, otherwise returns pointer to data.
pArray [out,retval]
Pointer to the SAFEARRAY containing the raw data buffer.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example grabs a frame, retrieves the raw data array and displays the value of the specified element of the array.
Dim pix as Long
Prontocam1.Grab
RawData=Prontocam1.GetRawData
x=16
y=32
pix=RawData(x,y)
if pix < 0 then
pix=65535-pix
endif
MsgBox RawData(x,y)
Remarks
This function returns the frame data as they arrive from the camera (before being converted to an RGB image).
GetRawData does not copy the image data, so the array returned contains the actual image buffer of the currently
acquired frame. Modifying elements of the array will change actual pixel values in the image buffer. This can be used to
perform custom image processing and display a processed image in real time. Note that this feature cannot be used in .NET
as its framework creates a copy of the array returned. For direct access to raw data in C# set isPoin er to True and use the
poitner instead of an array.
Raw image data are stored in the standard order from top to bottom, therefore the first element of the array is first pixel of
the top line of the image. The type of data and dimensions of the array returned by GetRawData depends on the ouput
126
format of the video, its horizontal width SizeX and the number of lines acquired, as specified in the following table:
Format Data type Dimensions
Mono (8) Byte 0 to SizeX -1, 0 to Lines - 1
Raw Color (8) Byte 0 to SizeX -1, 0 to Lines – 1
YUV (4:1:1) Byte 0 to SizeX*3/2 -1, 0 to Lines – 1
YUV (4:2:2) Integer(Word) 0 to SizeX -1, 0 to Lines – 1
YUV (4:4:4) Integer(Word) 0 to SizeX -1, 0 to Lines – 1
Mono (16) Integer(Word) 0 to SizeX -1, 0 to Lines – 1
Raw Color (16) Integer(Word) 0 to SizeX -1, 0 to Lines – 1
RGB (8:8:8) Byte 0 to SizeX * 3 - 1, 0 to Lines – 1
RGB (16:16:16) Integer(Word) 0 to SizeX * 3 - 1, 0 to Lines – 1
Format Data type Dimensions
Note that Prontocam automatically converts YUV video outputed by a camera to 24-bit RGB.
For integer (word) type of data you can receive negative numbers if pixel values exceed 32767. In C and C# you can
convert signed integers to unsigned ones by using data casting. To get rid of negative values in VB and Delphi, subract
them from 65535 (see the example above).
127
3.2.34. GetRGBPixel
Description
Returns the array of RGB values at the specified coordinates.
Syntax
[VB]
Value=objProntocam.GetRGBPixel( X, Y )
[C/C++]
HRESULT GetRGBPixel( short X, short Y, VARIANT* pArray );
Data Types [VB]
X, Y: Integer
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
X [in]
The x-coordinate of the pixel
Y [in]
The y-coordinate of the pixel
pArray [out,retval]
Pointer to the SAFEARRAY of the dimension of 3 containing long R, G and B values of the current pixel
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid input arguments.
Example
This VB example grabs a frame and displays the value of the G-value of the pixel at the specified
coordinates.
Prontocam1.Grab
RGB=Prontocam1.GetRGBPixel(64,32)
MsgBox RGB(1)
Remarks
The values returned by GetRGBPixel depend on the format of the video acquired. For 24-bit video the method will retrieve
the data from the internal image memory. For the grayscale video the R, G, and B values will be the same and equal to the
luminance value in the specified coordinates.
The values of the x and y coordinates must not exceed the width and height of the video frame, or the error will occur.
128
3.2.35. GetSaturationMin
Description
Returns the minimum value of the Saturation property.
Syntax
[VB]
Value=objProntocam.GetSaturationMin()
[C/C++]
HRESULT GetSaturationMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum saturation value
Return Values
S_OK
Success
E_FAIL
The saturation control is not available for the selected camera
Example
This VB example uses the minimum and maximum saturation values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetSaturationMin
Slider1.Max = Prontocam1.GetSaturationMax
Slider1.Value = Prontocam1.Saturation
End Sub
Remarks
If the currently selected camera doesn't support software saturation control, the method will generate an error.
129
3.2.36. GetSaturationMax
Description
Returns the maximum value of the Saturation property.
Syntax
[VB]
Value=objProntocam.GetSaturationMax()
[C/C++]
HRESULT GetSaturationMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum saturation value
Return Values
S_OK
Success
E_FAIL
The saturation control is not available for the selected camera
Example
This VB example uses the minimum and maximum saturation values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetSaturationMin
Slider1.Max = Prontocam1.GetSaturationMax
Slider1.Value = Prontocam1.Saturation
End Sub
Remarks
If the currently selected camera doesn't support software saturation control, the method will generate an error.
130
3.2.37. GetSharpnessMin
Description
Returns the minimum value of the Sharpness property.
Syntax
[VB]
Value=objProntocam.GetSharpnessMin()
[C/C++]
HRESULT GetSharpnessMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum sharpness value
Return Values
S_OK
Success
E_FAIL
The sharpness control is not available for the selected camera
Example
This VB example uses the minimum and maximum sharpness values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetSharpnessMin
Slider1.Max = Prontocam1.GetSharpnessMax
Slider1.Value = Prontocam1.Sharpness
End Sub
Remarks
If the currently selected camera doesn't support software sharpness control, the method will generate an error.
131
3.2.38. GetSharpnessMax
Description
Returns the maximum value of the Sharpness property.
Syntax
[VB]
Value=objProntocam.GetSharpnessMax()
[C/C++]
HRESULT GetSharpnessMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum sharpness value
Return Values
S_OK
Success
E_FAIL
The sharpness control is not available for the selected camera
Example
This VB example uses the minimum and maximum sharpness values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetSharpnessMin
Slider1.Max = Prontocam1.GetSharpnessMax
Slider1.Value = Prontocam1.Sharpness
End Sub
Remarks
If the currently selected camera doesn't support software sharpness control, the method will generate an error.
132
3.2.39. GetShutterMin
Description
Returns the minimum value of the Shutter property.
Syntax
[VB]
Value=objProntocam.GetShutterMin()
[C/C++]
HRESULT GetShutterMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out,retval]
Pointer to the minimum shutter value
Return Values
S_OK
Success
E_FAIL
The shutter control is not available for the selected camera
Example
This VB example uses the minimum and maximum shutter values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetShutterMin
Slider1.Max = Prontocam1.GetShutterMax
Slider1.Value = Prontocam1.Shutter
End Sub
Remarks
If the currently selected camera doesn't support software shutter control, the method will generate an error.
133
3.2.40. GetShutterMax
Description
Returns the maximum value of the Shutter property.
Syntax
[VB]
Value=objProntocam.GetShutterMax()
[C/C++]
HRESULT GetShutterMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out,retval]
Pointer to the maximum shutter value
Return Values
S_OK
Success
E_FAIL
The shutter control is not available for the selected camera
Example
This VB example uses the minimum and maximum shutter values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetShutterMin
Slider1.Max = Prontocam1.GetShutterMax
Slider1.Value = Prontocam1.Shutter
End Sub
Remarks
If the currently selected camera doesn't support software shutter control, the method will generate an error.
134
t t
3.2.41. GetSlopeExposure
Description
Returns the exposure levels for the multi-slope integration mode. Available only for selected cameras such as Toshiba Teli
CSB4000F.
Syntax
[VB]
objProntocam.GetSlopeExposure Exposure1 [,Exposure2]
[C/C++]
HRESULT GetSlopeExposure( long *pExposure1 [,long *pExposure2] );
Data Types [VB]
Exposure1: long [ByRef]
Exposure2: long (optional) [ByRef]
Return value: None
Parameters [C/C++]
pExposure1 [in]
Pointer to the exposure value for the second slope of the camera integration curve.
pExposure1 [in]
Pointer to the exposure value for the third slope of the camera integration curve.
Return Values
S_OK
Success
E_FAIL
Feature is not available.
Example
This VB example displays the exposure values for all three slopes of the camera integration curve:
Dim exp1 As Long
Dim exp2 As Long
Dim exp3 As Long
exp1 = Prontocam1.Shutter
Prontocam1.GetSlopeExposure exp2, exp3
Label1.Caption=exp1
Label2.Caption=exp2
Label3.Caption=exp3
End Sub
Remarks
The integration time for the second and third slopes of the integration curve is defined via the integration time of an
immediately preceding slope:
Slope integra ion time = Exposure / 0x1000 * preceeding slope in egration time where the first slope corresponds to the
Shutter property.
For more information on the multi-slope operation refer to the manufacturer's documentation.
135
3.2.42. GetSlopeReset
Description
Returns the voltage reset levels for the multi-slope integration mode. Available only for selected cameras such as Toshiba
Teli CSB4000F.
Syntax
[VB]
objProntocam.GetSlopeReset Reset1 [,Reset2]
[C/C++]
HRESULT GetSlopeReset( long *pReset1 [,long *pReset2] );
Data Types [VB]
Reset1: long [ByRef]
Reset2: long (optional) [ByRef]
Return value: None
Parameters [C/C++]
pReset1 [in]
Pointer to the reset value for the second slope of the camera integration curve.
pReset1 [in]
Pointer to the reset value for the third slope of the camera integration curve.
Return Values
S_OK
Success
E_FAIL
Feature is not available.
Example
This VB example displays the reset values of the camera integration curve:
Dim reset1 As Long
Dim reset2 As Long
Prontocam1.GetSlopeReset reset1, reset2
Label1.Caption=reset1
Label2.Caption=reset2
End Sub
Remarks
The actual values of reset voltages are inverted relative to the values of Reset1 and Reset2. Therefore the higher setting
means the lower voltage at which the corresponding slope starts. If the voltage becomes higher than the saturation level or
lower than the black level, the multislope function will not work accurately.
For more information on the multi-slope operation refer to the manufacturer's documentation.
136
3.2.43. GetTriggerInfo
Description
Returns the array of long values containing the information releated to triggering.
Syntax
[VB]
Value=objProntocam.GetTriggerInfo()
[C/C++]
HRESULT GetTriggerInfo( VARIANT* pInfo );
Data Types [VB]
Return value: Variant (Array)
Parameters [C/C++]
pInfo [out,retval]
Pointer to the SAFEARRAY containing the following long values in the listed order:
- presense of the trigger feature (1 - available, 0 - unavailable)
- number of supported trigger modes (see TriggerMode)
- presens of the trigger polarity control (1 - polarity control is available, 0 - unavailable)
- number of trigger sources including the software trigger (see TriggerSource)
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example retrieves the number of available trigger modes and initializes a corresponding
combo box:
Private Sub Form_Load()
TriggerInfo = Prontocam1.GetTriggerInfo
ModeCount=TriggerInfo(1)
For i = 1 To ModeCount
Combo1.AddItem ("Mode " + cstr(i))
Next
Combo1.ListIndex = 0
End Sub
Private Sub Combo1_Click()
Prontocam1.TriggerMode = Combo1.ListIndex
End Sub
Remarks
Use this method to implement custom trigger-related controls.
137
3.2.44. GetWhiteBalanceMin
Description
Returns the minimum value of the WhiteBalanceUB and WhiteBalanceVR properties.
Syntax
[VB]
Value=objProntocam.GetWhiteBalanceMin()
[C/C++]
HRESULT GetWhiteBalanceMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum white balance value
Return Values
S_OK
Success
E_FAIL
The white balance control is not available for the selected camera
Example
This VB example uses the minimum and maximum white balance values to initialize slider controls:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetWhiteBalanceMin
Slider1.Max = Prontocam1.GetWhiteBalanceMax
Slider1.Value = Prontocam1.WhiteBalanceUB
Slider2.Min = Prontocam1.GetWhiteBalanceMin
Slider2.Max = Prontocam1.GetWhiteBalanceMax
Slider2.Value = Prontocam1.WhiteBalanceVR
End Sub
Remarks
If the currently selected camera doesn't support software white balance control, the method will generate an error.
138
3.2.45. GetWhiteBalanceMax
Description
Returns the maximum value of the WhiteBalanceUB and WhiteBalanceVR properties.
Syntax
[VB]
Value=objProntocam.GetWhiteBalanceMax()
[C/C++]
HRESULT GetWhiteBalanceMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum white balance value
Return Values
S_OK
Success
E_FAIL
The white balance control is not available for the selected camera
Example
This VB example uses the minimum and maximum white balance values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetWhiteBalanceMin
Slider1.Max = Prontocam1.GetWhiteBalanceMax
Slider1.Value = Prontocam1.WhiteBalanceUB
Slider2.Min = Prontocam1.GetWhiteBalanceMin
Slider2.Max = Prontocam1.GetWhiteBalanceMax
Slider2.Value = Prontocam1.WhiteBalanceVR
End Sub
Remarks
If the currently selected camera doesn't support software white balance control, the method will generate an error.
139
3.2.46. GetWidth
Description
Returns the maximum horizontal size of the video frame for the currently selected Format.
Syntax
[VB]
Value=objProntocam.GetWidth()
[C/C++]
HRESULT GetWidth(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum gain value
Return Values
S_OK
Success
E_FAIL
Failure
Example
This VB example uses the minimum video width and height to initialize slider controls:
Private Sub Form_Load()
Slider1.Min = 0
Slider1.Max = Prontocam1.GetWidth
Slider2.Min = 0
Slider2.Max = Prontocam1.GetHeight
Slider1.Value = Prontocam1.SizeX
Slider2.Value = Prontocam1.SizeY
End Sub
Remarks
This method allows you to determine the maximum size of the video frame in a partial scan mode (Format_7). If the
currently selected video mode represents a fixed format, the value returned by the method will be identical to the value
returned by the SizeX property. See Mode for more details.
140
3.2.47. GetZoomMin
Description
Returns the minimum value of the Zoom property.
Syntax
[VB]
Value=objProntocam.GetZoomMin()
[C/C++]
HRESULT GetZoomMin(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the minimum zoom value
Return Values
S_OK
Success
E_FAIL
The zoom control is not available for the selected camera
Example
This VB example uses the minimum and maximum zoom values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetZoomMin
Slider1.Max = Prontocam1.GetZoomMax
Slider1.Value = Prontocam1.Zoom
End Sub
Remarks
If the currently selected camera doesn't support software zoom control, the method will generate an error.
141
3.2.48. GetZoomMax
Description
Returns the maximum value of the Zoom property.
Syntax
[VB]
Value=objProntocam.GetZoomMax()
[C/C++]
HRESULT GetZoomMax(long* pValue );
Data Types [VB]
Return value: Long
Parameters [C/C++]
pValue [out, retval]
Pointer to the maximum zoom value
Return Values
S_OK
Success
E_FAIL
The zoom control is not available for the selected camera
Example
This VB example uses the minimum and maximum zoom values to initialize the slider control:
Private Sub Form_Load()
Slider1.Min = Prontocam1.GetZoomMin
Slider1.Max = Prontocam1.GetZoomMax
Slider1.Value = Prontocam1.Zoom
End Sub
Remarks
If the currently selected camera doesn't support software zoom control, the method will generate an error.
142
3.2.49. Grab
Description
Grabs a single frame into the internal memory. If the Display property is enabled, the frame will be automatically displayed
in the control window.
Syntax
[VB]
objProntocam.Grab
[C/C++]
HRESULT Grab();
Parameters
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example grabs a frame and saves it as a tiff file
Prontocam1.Grab
Prontocam1.SaveImage "image1.tif"
Remarks
If the Asynch property is set to FALSE (synchronous acquisition), the Grab method will wait for the current frame to be
acquired before returning. If the asynchronous mode is selected, the method will initiate the acquisition and return
immediately. This will allow your application to perform other tasks while the frame is being acquired. When the acquisition
of the current frame is complete, the FrameAcquired event will be raised.
If the continuous acquisition mode is selected (the Acquire property is set to TRUE), the Grab method will not affect the
acquisition process, however you can use it to delay your application until the current frame is completed.
143
3.2.50. LoadChannel
Description
Loads a group of previously stored settings from form the selected channel of the camera's internal EEPROM.
Syntax
[VB]
objProntocam.LoadChannel( Channel )
[C/C++]
HRESULT LoadChannel( short Channel );
Data Types [VB]
Channel: Integer
Return value: None
Parameters [C/C++]
Channel [in]
The index of the camera's memory channel (0-7). Channel 0 corresponds to the factory default
settings.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example restores the default factory camera settings:.
Private Sub FactoryButton_Click()
Prontocam1.LoadChannel (0)
End Sub
Remarks
The number of memory channels available for the current camera is returned by GetMaxChannel.
Note that some cameras might not support memory channels.Calling this method with "-1" argument will refresh Prontocam
properties synchronizing them with the current camera settings. This is a recommended operation if the camera settings
has been changed by hardware controls or by direct writes to 1394 registers via WriteRegister.
144
3.2.51. OverlayClear
Description
Clears graphics and text from the overlay.
Syntax
[VB]
objProntocam.OverlayClear
[C/C++]
HRESULT OverlayClear();
Parameters
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example moves a red rectangle over the live image by repeatedly erasing and drawing it:
Private Sub Form_Load()
x = 0
Prontocam1.Acquire = True
Prontocam1.OverlayColor = RGB(255, 0, 0)
Prontocam1.Overlay = True
End Sub
Dim x As Integer
Private Sub Prontocam1_FrameAcquired()
Prontocam1.OverlayClear
Prontocam1.OverlayRectangle x, 10, x + 50, 80, 3
x = x + 2
If x = Prontocam1.SizeX Then
x = 0
End If
End Sub
Remarks
To create animation effects, use this method in combination with OverlayColor, OverlayPixel,
OverlayLine, OverlayRectangle, OverlayEllipse, OverlayText.
145
t
3.2.52. OverlayEllipse
Description
Draws an empty or filled ellipse in the overlay.
Syntax
[VB]
objProntocam.OverlayEllipse StartX, StartY, EndX, EndY [,Width = 1]
[C/C++]
HRESULT OverlayEllipse( short StartX, short StartY, short EndX, short EndY,
short Width);
Data Types [VB]
StartX, StartY, EndX, EndY: Integer
Width: Integer (optional)
Parameters [C/C++]
StartX [in], StartY [in]
Pixel coordinates of the top left corner of the ellipse, relative to the image origin.
EndX [in], EndY [in]
Pixel coordinates of the bottom right corner of the ellipse, relative to the image origin.
Width [in]
Width of the outline of the ellipse in pixels. If zero, a filled ellipse is drawn.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a filled red ellipse on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayEllipse 100,100,200,200,0
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
To draw a filled ellipse, use Wid h=0. Also see OverlayColor, OverlayClear.
146
3.2.53. OverlayLine
Description
Draws a line in the overlay.
Syntax
[VB]
objProntocam.OverlayLine StartX, StartY, EndX, EndY [,Width = 1]
[C/C++]
HRESULT OverlayLine( short StartX, short StartY, short EndX, short EndY,
short Width);
Data Types [VB]
StartX, StartY, EndX, EndY: Integer
Width: Integer (optional)
Parameters [C/C++]
StartX [in], StartY [in]
Pixel coordinates of the starting point of the line, relative to the image origin.
EndX [in], EndY [in]
Pixel coordinates of the end point of the line, relative to the image origin.
Width [in]
Width of the line in pixels.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a filled red line of width 3 on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayLine 100,100,200,200,3
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
To draw multiple lines, call this method several times. Also see OverlayColor, OverlayClear.
147
3.2.54. OverlayPixel
Description
Draws a pixel in the overlay.
Syntax
[VB]
objProntocam.OverlayPixel X, Y
[C/C++]
HRESULT OverlayPixel( short X, short Y, bstr Text );
Data Types [VB]
X, Y : Integer
Text : String
Parameters [C/C++]
X [in], Y [in]
Coordinates of the pixel relative to the image origin.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays four red pixels on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayPixel 100,100
Prontocam1.OverlayPixel 100,200
Prontocam1.OverlayPixel 200,100
Prontocam1.OverlayPixel 200,200
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
To draw custom shapes, call this method multiple times. Also see OverlayColor, OverlayClear.
148
3.2.55. OverlayRectangle
Description
Draws an empty or filled rectangle in the overlay.
Syntax
[VB]
objProntocam.OverlayRectangle StartX, StartY, EndX, EndY [,Width = 1]
[C/C++]
HRESULT OverlayRectangle( short StartX, short StartY, short EndX, short
EndY, short Width);
Data Types [VB]
StartX, StartY, EndX, EndY: Integer
Width: Integer (optional)
Parameters [C/C++]
StartX [in], StartY [in]
Pixel coordinates of the top left corner of the rectangle, relative to the image origin.
EndX [in], EndY [in]
Pixel coordinates of the bottom right corner of the rectangle, relative to the image origin.
Width [in]
Width of the outline of the rectangle in pixels. If zero, a filled rectangle is drawn.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a filled red rectangle on the live video:
Prontocam1.Acquire = True
Prontocam1.OverlayRectangle 100,100,200,200,0
Prontocam1.OverlayColor=RGB(255,0,0)
Prontocam1.Overlay= True
Remarks
To draw a filled rectangle, use Width=0. To draw multiple rectangles, call this method several times. Also see OverlayColor,
OverlayClear.
149
3.2.56. OverlayText
Description
Draws a string of text in the overlay.
Syntax
[VB]
objProntocam.OverlayText X, Y, Text
[C/C++]
HRESULT OverlayPixel( short X, short Y, );
Data Types [VB]
X, Y : Integer
Parameters [C/C++]
X [in], Y [in]
Coordinates of the pixel relative to the image origin.
Text [in]
The string containing the text to be drawn.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
The following VB example overlays a string of text on the live video:
Dim Font As New StdFont
Font.Name = "Arial"
Font.Size = 18
Font.Bold = True
Prontocam1.OverlayFont = Font
Prontocam1.OverlayText 10, 100, "Prontocam rules!"
Prontocam1.OverlayColor = RGB(255, 0, 0)
Prontocam1.Overlay = True
Remarks
To select the font for drawing text strings, use OverlayFont. To draw multiple strings, call this method several times. Also
see OverlayColor, OverlayClear.
150
3.2.57. SaveImage
Description
Saves the current frame buffer in the specified image file. The method supports BMP, TIFF and JPEG formats with a
selectable compression.
Syntax
[VB]
objProntocam.SaveImage File [, Compression]
[C/C++]
HRESULT SaveImage( bstr File, long Compression );
Data Types [VB]
File: String
Compression: Integer (optional)
Parameters [C/C++]
File [in]
The string containing the file name and path
Compression [in]
The file compression ratio
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid file name.
Example
This VB example saves the current frame in a JPEG file with the specified compression quality.
Prontocam1.SaveImage "C:₩₩myframe.jpg", 75
Remarks
The image file format in which the frame will be saved is defined by the file extension indicated in the File argument. Use
"bmp" for a BMP file, "tif" for TIFF, and "jpg" for JPEG. If none of these extensions are found in the File string, an error will
occur. The way the Compression argument is treated depends on the file format.
BMP files: Compression = 0 - no compression
Compression = 1 - RLE compression (not implemented in this version)
TIFF files: Compression = 0 - no compression
Compression = 1 - LZW compression
Compression = 2 - PackBits compression
JPEG files: Compression is an integer value in the range 0-100 specifying the quality of the image. Lower values
correspond to a lower quality with a higher compression, while higher values correspond to a higher
quality with a lower compression.
If Compression parameter is omitted, BMP and TIFF files will be recorded with no compression, while JPEG files will be
recorded with quality of 75.
151
3.2.58. SaveChannel
Description
Writes the current settings to the selected channel of the camera's internal EEPROM.
Syntax
[VB]
objProntocam.SaveChannel Channel
[C/C++]
HRESULT SaveChannel( short Channel );
Data Types [VB]
Channel: Integer
Return value: None
Parameters [C/C++]
Channel [in]
The index of the camera's memory channel (1-7).
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example saves the current camera settings in memory channel 1.
Private Sub SaveSettingsButton_Click()
Prontocam1.SaveChannel (1)
End Sub
Remarks
The number of memory channels available for the current camera is returned by GetMaxChannel. Channel 0 corresponds to
the factory default settings and cannot be overwritten. Note that some cameras might not support memory channels.
152
3.2.59. SetImageWindow
Description
Copies pixel values from the two-dimensional array into the selected window of the current frame.
Syntax
[VB]
objProntocam.SetImageWindow X, Y
[C/C++]
HRESULT SetImageWindow( short X, short Y, VARIANT* pArray );
Data Types [VB]
Return value: Variant (SAFEARRAY)
Parameters [C/C++]
X [in], Y[in]
The x- and y- frame coordinates at which the top left corner of the window will be copied.
pArray [out,retval]
Pointer to the SAFEARRAY containing the pixel values to be copied.
Return Values
S_OK
Success
E_FAIL
Failure
E_INVALIDARG
Input array has wrong data type
Example
This VB example uses the FrameAcquired event to increase the brightness in the central area of the live image:
Private Sub Form_Load()
Prontocam1.Display = False
Prontocam1.Acquire = True
End Sub
Private Sub Prontocam1_FrameAcquired()
xc = Prontocam1.SizeX / 2
yc = Prontocam1.SizeY / 2
w = Prontocam1.GetImageWindow(xc - 70, yc - 50, 140, 100)
For y = 0 To UBound(w, 2)
For x = 0 To UBound(w, 1)
pix = w(x, y) + 50
If pix > 255 Then
pix = 255
End If
w(x, y) = pix
Next
Next
Prontocam1.SetImageWindow xc - 70, yc - 50, w
153
Prontocam1.Draw
End Sub
Remarks
The array submitted to SetImageWindow must have the type and dimensions corresponding of those of the frame buffer,
as specified in the following table:
Format Data type Horizontal Dimension
8-bit monochrome Byte Width
16-bit gray monochrome Integer (word) Width
24-bit RGB Byte Width*3
48-bit RGB Integer (word) Width*3
where Width is the intended horizontal size of the window in in pixels. If the dimensions of the window are too large to
accomodate the frame size, they will be clipped to the frame boundaries.
For real-time image processing SetImageWindow should be used in conjunction with the Draw method.
154
3.2.60. SetIsoSpeed
Description
Sets the camera's isochronous transmission speed in Mbps/sec.
Syntax
[VB]
objProntocam.SetIsoSpeed Speed
[C/C++]
HRESULT SetIsoSpeed( short Speed );
Data Types [VB]
Speed: Integer
Return value: None
Parameters [C/C++]
Speed [in]
Isochronous transmission speed to be set
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example sets the transmission speed of the camera to 200 Mbps:
speed=Prontocam1.SetIsoSpeed (200)
MsgBox speed
Remarks
Possible values of the Speed parameter are 100, 200, 400 for 1394a cameras and 100, 200, 400, 800, 1600 and 3200 for
1394b cameras.
155
3.2.61. SetSlopeExposure
Description
Assigns the exposure levels for the multi-slope integration mode. Available only for selected cameras such as Toshiba Teli
CSB4000F.
Syntax
[VB]
objProntocam.SetSlopeExposure Exposure1 [,Exposure2]
[C/C++]
HRESULT SetSlopeExposure( long Exposure1 [,long Exposure2] );
Data Types [VB]
Exposure1: long
Exposure2: long (optional)
Return value: None
Parameters [C/C++]
Exposure1 [in]
Defines the exposure time for the second slope of the camera integration curve.
Exposure1 [in]
Defines the exposure time for the third slope of the camera integration curve. If omitted, two-slope
operation is used.
Return Values
S_OK
Success
E_FAIL
Feature is not available.
E_INVALIDARG
Argument is out of range.
Example
This VB example adjusts the exposure time and reset level for two-slope integration mode:
Private Sub Form_Load()
HScroll1.Min = 0
HScroll1.Max = 255
HScroll2.Min = 0
HScroll2.Max = 255
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.SetSlopeExposure(HScroll1.Value)
End Sub
Private Sub HScroll2_Scroll()
Prontocam1.SetSlopeReset(HScroll2.Value)
End Sub
156
t t
Remarks
The allowed range of values for both arguments is 0 - 255.
The integration time for the second and third slopes of the integration curve is defined via the integration time of an
immediately preceding slope:
Slope integra ion time = Exposure / 0x1000 * preceeding slope in egration time where the first slope corresponds to the
Shutter property.
For more information on the multi-slope operation refer to the manufacturer's documentation.
157
Success
E_FAIL
Feature is not available.
E_INVALIDARG
Argument is out of range.
Example
This VB example adjusts the exposure time and reset level for two-slope integration mode:
Private Sub Form_Load()
HScroll1.Min = 0
HScroll1.Max = 255
HScroll2.Min = 0
HScroll2.Max = 255
End Sub
Private Sub HScroll1_Scroll()
Prontocam1.SetSlopeExposure(HScroll1.Value)
End Sub
Private Sub HScroll2_Scroll()
Prontocam1.SetSlopeReset(HScroll2.Value)
End Sub
3.2.62. SetSlopeReset
Description
Assigns the voltage reset levels for the multi-slope integration mode. Available only for selected cameras such as Toshiba
Teli CSB4000F.
Syntax
[VB]
objProntocam.SetSlopeReset Reset1 [,Reset2]
[C/C++]
HRESULT SetSlopeReset( long Reset1 [,long Reset2] );
Data Types [VB]
Reset1: long
Reset2: long (optional)
Return value: None
Parameters [C/C++]
Reset1 [in]
Defines the voltage reset the second segment of the camera integration curve.
Reset1 [in]
Defines the voltage reset for the third segment of the camera integration curve. Can be omitted for two-slope operation.
Return Values
S_OK
158
Remarks
The allowed range of values for both arguments is 0 - 255. The actual values of reset voltages are inverted relative to the
values of Reset1 and Reset2. Therefore the higher setting means the lower voltage at which the corresponding slope starts.
If the voltage becomes higher than the saturation level or lower than the black level, the multislope function will not
work accurately.
For more information on the multi-slope operation refer to the manufacturer's documentation.
159
3.2.63. ShowProperties
Description
Displays Prontocam property pages in runtime mode.
Syntax
[VB]
objProntocam.ShowProperties [ EnableCamList ]
[C/C++]
HRESULT ShowProperties( bool bEnableCamList );
Parameters
EnableCamList: Boolean
Parameters [C/C++]
bEnableCamList [in]
Set to TRUE to enable the camera selection box in the Source property page, or set to FALSE to disable it
Return Values
S_OK
Success
E_FAIL
Failure
Example
This VB example demonstrates how to display the property pages in runtime mode.
Private Sub Properties_Click()
Prontocam1.ShowProperties False
End Sub
Remarks
Setting the EnableCamList parameter to False allows you to disable the camera selection box in the Source property page
thus preventing a user from switching to another camera. This is a recommended scenario in case your application uses
several Prontocam objects configured for different cameras. See formation.
PropertyPages for more in
160
3.2.64. SoftTrigger
Description
Sets/resets the software trigger signal.
Syntax
[VB]
objProntocam.SoftTrigger State
[C/C++]
HRESULT SoftTrigger( bool State);
Parameters
State: Boolean
Parameters [C/C++]
State [in]
Set to TRUE to set the software trigger, or set to FALSE to reset it
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example demonstrates the use of the software trigger:
Private Sub Form_Load()
Prontocam1.Asynch = False
Prontocam1.Acquire = True
Prontocam1.Trigger = True
Prontocam1.TriggerSource = 7
End Sub
Private Sub SoftTrig_Click()
Prontocam1.SoftTrigger (True)
End Sub
Remarks
Use SoftTrigger to generate the software trigger signal. Note that this method will only have effect if
set to 7 (software trigger) . The trigger signal will typically initiate an acquisition of a single frame. Note
that for 2 and 4 you don't need to reset the software trigger, as the trigger will clear itself.
Trigger is enable and
TriggerSource is
TriggerModes 0,
161
3.2.65. StartCapture
Description
Starts time-lapse video capture to the specified AVI file or series of image files (bmp, tif or jpg). Use d
video capture.
Syntax
[VB]
objProntocam.StartCapture File [, Timelapse = 0 ]
[C/C++]
HRESULT StopCapture( bstr File, float Timelapse );
Data Types [VB]
File : String
Timelapse : Single (optional)
Parameters [C/C++]
File [in]
The string containing the path to the avi file or image file (bmp, tif or jpg).
Timelapse [in]
The interval between consecutive frames in seconds
Return Values
S_OK
Success
E_FAIL
Failure.
E_INVALIDARG
Invalid file name.
Example
This VB example demonstrates how to capture the video to an AVI file at the current frame rate:.
Private Sub StartButton_Click()
Prontocam1.StartCapture "c:₩mycapture.avi"
End Sub
Private Sub StopButton_Click()
Prontocam1.StopCapture
End Sub
This C# example demonstrates how to capture a series of TIFF images at 0.5 sec interval:
private void startbutton_Click(object sender, System.EventArgs e)
{
axProntocam1.StartCapture("c:₩₩images₩₩myframe.tif", 0.5);
}
private void stopbutton_Click(object sender, System.EventArgs e)
{
axProntocam1.StopCapture();
}
StopCapture to en
162
Remarks
Prontocam records AVI files in the uncompressed format, 8- or 24-bits per pixel.
If bmp, tif or jpg extension is specified for the file path, the file name is used as a template to which the ordinal number of
the frame captured is appended. In the C# example above consecutive frames will be stored to files "myframe00001.tif",
myframe00002.tif" and so on. Note that TIF format can store 16- and 48-bit per pixel images.
If Timelapse is not specified, the video will be recorded at the maximum frame rate defined by the camera and system
throughput.
163
3.2.66. StopCapture
Description
Stops video capture to an AVI file or series of images.
Syntax
[VB]
objProntocam.StopCapture
[C/C++]
HRESULT StopCapture();
Parameters
None
Return Values
S_OK
Success
E_FAIL
Failure
Example
This VB example demonstrates how to capture the video to an AVI file with 0.5 sec time lapse between the frames.
Private Sub StartButton_Click()
Prontocam1.StartCapture "c:₩mycapture.avi", 0.5
End Sub
Private Sub StopButton_Click()
Prontocam1.StopCapture
End Sub
Remarks
Use this method to end the video capture initiated by StartCapture.
164
3.2.67. ReadRegister
Description
Reads a quadlet from the selected 1394 register of the current camera.
Syntax
[VB]
Value=objProntocam.ReadRegister( Reg )
[C/C++]
HRESULT ReadRegister( long Reg, long* pValue );
Data Types [VB]
Reg: Long
Return value: Long
Parameters [C/C++]
Reg [in]
The 32-bit offset of the register into the 1394 base address FFFF 0000 0000 h or the offset of the register into the Camera
Control and Status Register FFFF F0F0 0000 h.
pValue [out,retval]
Pointer to the registers's 32-bit value
Return Values
S_OK
Success
E_FAIL
Failure.
Examples
This C example reads the value of the temperature inquiry register using the absolute register offset:
value=Prontocam.ReadRegister(0xF0F0052C);
This VB example reads the value of the temperature inquiry register using the relative register offset:
value=Prontocam.ReadRegister(&H52C)
Remarks
Addresses starting with F (least four significant bits are on) will be treated as 32-bit offsets to the 1394 base adress FFFF
0000 0000 h. Other addresses will be treated as offsets into the Camera Control and Status register, which usually starts
with FFFF F0F0 0000 h. For more information on the DCAM command registers refer to "IIDC 1394-based Digital Camera
Specification, Version 1.31" published by the 1394 Trade Association.
165
3.2.68. WriteRegister
Description
Writes a quadlet to the selected 1394 register of the current camera.
Syntax
[VB]
Value=objProntocam.WriteRegister Reg, Value
[C/C++]
HRESULT WriteRegister( long Reg, long Value );
Data Types [VB]
Reg: Long
Value: Long
Parameters [C/C++]
Reg [in]
The 32-bit offset of the register into the 1394 base address FFFF 0000 0000 h or the offset of the register into the Camera
Control and Status Register FFFF F0F0 0000 h.
Value [in]
The value to be written in the register
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This C example writes a value to the optical filter register using the absolute register offset.
value=Prontocam.WriteRegister(0xF0F0088C,0x0C000010);
This VB example writes a value to the optical filter register using the relative register offset.
value=Prontocam.WriteRegister(&H88C,&H0C000010)
Remarks
Addresses starting with F (least four significant bits are on) will be treated as 32-bit offsets to the 1394 base adress FFFF
0000 0000 h. Other addresses will be treated as offsets into the Camera Control and Status register, which usually starts
with FFFF F0F0 0000 h.
For more information on the DCAM command registers refer to "IIDC 1394-based Digital Camera Specification, Version
1.30" published by the 1394 Trade Association.
166
3.3. Events The following events are generated by Prontocam control:
Called after a frame has been acquired into the internal memory FrameAcquired
FrameAcquiredX Called after a frame has been acquired into the internal memory (multithreaded version)
FrameDropped Called if a frame is dropped during the video acquisition
Timeout Called if the acquisition timeout has expired
FormatChanged Called if the video size or pixel format has changed
MouseDown Called when the mouse button is pressed inside the control window
MouseUp Called when the mouse button is released inside the control window
MouseDblClick Called when the mouse button is double-clicked inside the control window
MouseMove Called when the mouse button has moved inside the control window
Scroll Called when the live video display has been scrolled
167
3.3.1. MouseDblClick
Description
This event is fired each time the mouse button is double-clicked inside the control window. Returns the coordinates of a
pixel pointed by the cursor.
Syntax
[VB]
Private Sub objProntocam_MouseDblClick( ByVal X As Integer, ByVal Y As
Integer )
[C/C++]
HRESULT Fire_MouseDblClick( SHORT X, SHORT Y );
Data Types [VB]
X: Integer
Y: Integer
Parameters [C/C++]
X [in]
The X-coordinate of the pixel pointed by the cursor.
Y [in]
The Y-coordinate of the pixel pointed by the cursor.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the MouseDblClick event to open the Properties dialog:
Private Sub Prontocam1_MouseDblClick(ByVal X As Integer, ByVal Y As
Integer)
Dim Value As Integer
Value = Prontocam1.ShowProperties
End Sub
Remarks
Note that the coordinates returned by this event refer to the image coordinate system, not to the screen coordinates.
Set the ies to TRUE in order to display a scrollable live video and get a visual access to all
parts of the image.
Acquire and ScrollBars propert
168
3.3.2. MouseDown
Description
This event is fired each time the mouse button is pressed inside the control window. Returns the coordinates of a pixel
pointed by the cursor.
Syntax
[VB]
Private Sub objProntocam_MouseDown( ByVal X As Integer, ByVal Y As Integer
)
[C/C++]
HRESULT Fire_MouseDown( SHORT X, SHORT Y );
Data Types [VB]
X: Integer
Y: Integer
Parameters [C/C++]
X [in]
The X-coordinate of the pixel pointed by the cursor.
Y [in]
The Y-coordinate of the pixel pointed by the cursor.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the MouseDown event to display the value of the pixel pointed by the cursor:
Private Sub Prontocam1_MouseDown(ByVal X As Integer, ByVal Y As
Integer)
Dim Value As Integer
Value = Prontocam1.GetPixel(X, Y)
MsgBox Value
End Sub
Remarks
Note that the coordinates returned by this event refer to the image coordinate system, not to the screen coordinates.
Set the ies to TRUE in order to display a scrollable live video and get a visual access to all
parts of the image.
Acquire and ScrollBars propert
169
3.3.3. MouseMove
Description
This event is fired each time the mouse has moved inside the control window. Returns the coordinates
of a pixel pointed by the cursor.
Syntax
[VB]
Private Sub objProntocam_MouseMove( ByVal X As Integer, ByVal Y As Integer
)
[C/C++]
HRESULT Fire_MouseMove( SHORT X, SHORT Y );
Data Types [VB]
X: Integer
Y: Integer
Parameters [C/C++]
X [in]
The X-coordinate of the pixel pointed by the cursor.
Y [in]
The Y-coordinate of the pixel pointed by the cursor.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the MouseMove event to display the value of the pixel pointed by the cursor:
Private Sub Prontocam1_MouseMove(ByVal X As Integer, ByVal Y As
Integer)
Dim Value As Integer
Value = Prontocam1.GetPixel(X, Y)
Label1.Caption = Value
End Sub
Remarks
Note that the coordinates returned by this event refer to the image coordinate system, not to the screen coordinates.
Set the ies to TRUE in order to display a scrollable live video and get a visual access to all
parts of the image.
Acquire and ScrollBars propert
170
3.3.4. MouseUp
Description
This event is fired each time the mouse button is released inside the control window. Returns the coordinates of a pixel
pointed by the cursor.
Syntax
[VB]
Private Sub objProntocam_MouseUp( ByVal X As Integer, ByVal Y As Integer )
[C/C++]
HRESULT Fire_MouseUp( SHORT X, SHORT Y );
Data Types [VB]
X: Integer
Y: Integer
Parameters [C/C++]
X [in]
The X-coordinate of the pixel pointed by the cursor.
Y [in]
The Y-coordinate of the pixel pointed by the cursor.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the MouseUp event to display the value of the pixel pointed by the cursor:
Private Sub Prontocam1_MouseUp(ByVal X As Integer, ByVal Y As Integer)
Dim Value As Integer
Value = Prontocam1.GetPixel(X, Y)
MsgBox Value
End Sub
Remarks
Note that the coordinates returned by this event refer to the image coordinate system, not to the screen coordinates.
Set the ies to TRUE in order to display a scrollable live video and get a visual access to all
parts of the image.
Acquire and ScrollBars propert
171
3.3.5. FormatChanged
Description
This event is fired each time the frame size or pixel format of the camera changes.
Syntax
[VB]
Private Sub objProntocam_FormatChanged()
[C/C++]
HRESULT Fire_FormatChanged();
Parameters [C/C++]
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FormatChanged event to generate a sound signal:
Private Sub Prontocam1_FormatChanged()
Beep
End Sub
Remarks
The FrameDropped event is raised when the frame size or pixel format of the camera changes. Your application may use
this event to perform certain actions when the video format is changed through the Property Pages of Prontocam. See
r more details. ShowProperties fo
172
3.3.6. FrameAcquired
Description
This event is fired each time a frame has been acquired into the internal memory.
Syntax
[VB]
Private Sub objProntocam_FrameAcquired()
[C/C++]
HRESULT Fire_FrameAcquired();
Parameters [C/C++]
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameAcquired event to access and display a pixel value in real time:
Private Sub Prontocam1_FrameAcquired()
Label1.Caption = Prontocam1.GetPixel(16, 32)
End Sub
Remarks
One of the following conditions must be met, before the FrameAcquired event will be fired:
The perty has been set to TRUE
The hod has been called.
The FrameAcquired event is fired from the interface thread to provide compatibility with all types of ActiveX containers.
For applications created in VB.NET, C# and C++ it is recommended to use the ent.
Acquire pro
Grab met
FrameAcquiredX ev
173
3.3.7. FrameAcquiredX
Description
This event is fired each time a frame has been acquired into the internal memory. Unlike ed
from a processing thread providing a higher efficiency. Might not work in certain containers.
Syntax
[VB]
Private Sub objProntocam_FrameAcquiredX()
[C/C++]
HRESULT Fire_FrameAcquiredX();
Parameters
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB.NET example uses the FrameAcquiredX event to access and display a pixel value in real time:
Private Sub AxProntocam1_FrameAcquired(ByVal sender As System.Object, ByVal e As
AxPRONTOCAMLib._IProntocamEvents_FrameAcquiredEvent)
Label1.Text = AxProntocam1.GetPixel(16, 32)
End Sub
Remarks
This event is provided for applications that can process events fired from a processing thread (VB.NET, C#, C++). For
applications created in VB6, VBA and Delphi use ent instead.
One of the following conditions must be met, before the FrameAcquiredX event will be fired:
The perty has been set to TRUE
The hod has been called.
FrameAcquired event it is fir
FrameAcquired ev
Acquire pro
Grab met
174
3.3.8. FrameDropped
Description
This event is fired each time a frame is dropped during the video acquisition.
Syntax
[VB]
Private Sub objProntocam_FrameDropped()
[C/C++]
HRESULT Fire_FrameDropped();
Parameters [C/C++]
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the FrameDropped event to generate a sound signal:
Private Sub Prontocam1_FrameDropped()
Beep
End Sub
Remarks
The FrameDropped event is raised if a video FIFO overflow occurs during the acquisition of a frame resulting in a frame
drop. The most common reasons for this are low bandwidth (several cameras connected to the 1394 board) or CPU
overload.
175
3.3.9. Scroll
Description
This event is fired each time the live video display has been scrolled. Returns the horizontal and vertical scroll positions.
Syntax
[VB]
Private Sub objProntocam_Scroll( ByVal X As Integer, ByVal Y As Integer )
[C/C++]
HRESULT Fire_Scroll( SHORT ScrollX, SHORT ScrollY );
Data Types [VB]
ScrollX: Integer
ScrollY: Integer
Parameters [C/C++]
ScrollX [in]
The X-coordinate of the pixel pointed by the cursor.
ScrollY [in]
The Y-coordinate of the pixel pointed by the cursor.
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the Scroll event to display the position of the live video in the control window:
Private Sub Prontocam1_Scroll(ByVal ScrollX As Integer, ByVal ScrollY
As Integer)
Label1.Caption = ScrollX
Label2.Caption = ScrollY
End Sub
Remarks
Note that the scroll positions returned by this event refer to the image coordinate system, not to the screen coordinates.
The roperties to TRUE in order for the Scroll event to be fired. ScrollBars p
176
3.3.10. Timeout
Description
This event is fired each time a timeout occurs during the acquisition of a frame.
Syntax
[VB]
Private Sub objProntocam_Timeout()
[C/C++]
HRESULT Fire_Timout();
Parameters [C/C++]
None
Return Values
S_OK
Success
E_FAIL
Failure.
Example
This VB example uses the Timeout event to generate a sound signal:
Private Sub Prontocam1_Timeout()
Beep
End Sub
Remarks
The Timeout event is raised if 10 seconds passes after the od has been called and no frame has been acquired.
The event will be raised repeatedly if the control is set in the continuous acquisition mode ( t
common reason for a timeout is a missing trigger signal in the
Grab meth
Acquire is TRUE). The mos
Trigger mode.
177
3.4. Property Pages
The following property pages are available in Prontocam control:
Used to select the properties specifying the source for the video input Source
Format Used to select the properties specifying the format of the video
Exposure Used to select the properties specifying the exposure features of the video
Color Used to select the properties specifying the color features of the video
Advanced Used to select the properties specifying the advanced features of the video
178
3.4.1. Source
This property page is used to select the properties specifying the source for the video input. Select from the following
options:
Camera
Displays the vendor's name and mod ly selected c u have more than one camera connected to
the 1394 board, you can switch to another camera by choosing the corresponding camera name in the list. Equivalent to
the Camera property.
Trigger
Select this check box to set the current camera to the trigger mode. This mode is typically used with an asynchronously
resetable camera. The acquisition of a frame will occur upon receiving a signal from an external hardware trigger. To set
the camera to the continuous mode, clear the Trigger check box. Equivalent to the Trigger property.
Trigger Source
Lets you select the source for the trigger signal. Depending on a camera, there may be one or more hardware trigger inputs
as well as the software trigger. If the software trigger is available and selected, use the Set button to set and reset the
trigger event. If the camera doesn't suppot trigger source selection as defined by the DCAM 1.31 specifications, this option
will be unavailable. Equivalent to the TriggerSource property and SoftTrigger method.
Trigger mode
select the trigger mode as defined by the DCAM 1.31 specifications. If several trigger modes are available for the
currently selected camera, you can switch between them by choosing the desired mode from the list. See TriggerMode for
more details.
Trigger polarity
Lets you change polarity of the trigger input. Equivalent to the TriggerPolarity property. Choose one of the following
options:
High Active - trigger has high active input.
Low Active - trigger has low active input.
Acquire
Lets you enable the continuous acquisition mode. If this box is checked, the board will continuously acquire the video into
el of the current amera. If yo
Lets you
179
the internal image memory. If the control is visible, the live video will be displayed in the control window. Equivalent to the
Acquire property.
Asynchronous mode
Lets you select an acquisition mode. Check this box to set the board to the asynchronous mode. In this mode the board will
continuously transfer pixels into the host memory, allowing your application to process a captured frame while the
acquisition of the next frame occurs. The asynchron ode provides the fastest and most efficient setup for real-time
image processing. However, if processing occurs at a slower rate than pixels are acquired, using this mode may result in
the decomposition of images and loss of data. Clear this check box to set the board to the synchronous mode. In this
mode the acquisition of the next frame will be initiated upon the capture command. The synchronous mode is slower, but it
guarantees the wholeness of images during real-time processing. Equivalent to the Asynch property.
Digital zoom
Lets you adjust the magnification of the live video display. This option doesn't change the content of the image data, but
only its appearance in the control window. If it is set to zero, the image will be fit to the size of the control window. In this
case the display might not retain the original proportions of the video frame. Equivalent to the Magnification property.
3D look
Lets you enable or disable 3D-appearance of the control window. If this box is checked, the sunken edge will appear around
the border of the control window. Equivalent to the Edge property.
Scroll bars
Lets you enable or disable the scroll bars in the control window. If this box is checked and the video width or/and height
exceed the size of the control window, the scroll bar(s) will be displayed on the border of the control window allowing you
to pan the live video. Equivalent to the ScrollBars property. Gray
Flip
Lets you select one of the flipping modes. Flipping affects the live video display as well as actual order of pixels in the frame
buffer. Select among the following modes:
0 – None : No image flipping is performed.
1 – Horizontal: The image is flipped horizontally.
2 – Vertical: The image is flipped vertically.
3 – Both : The image is flipped horizontally and vertically.
This option is equivalent to the Flip property.
Palette
Lets you select one of a few predefined palette to be applied to a grayscale live video. The palettes represent choices that
may be useful in viewing different kinds of video in pseudo-colors. Choose among the following palettes:
Gray : Applies the standard 256-level grayscale palette. This is a regular mode of viewing a grayscale video.
Inverse: Applies the inverted 256-level grayscale palette. The video will be displayed in the negative format.
Saturated: Applies the grayscale palette with colorized upper entries. The saturated palette allows you to control the
dynamic range of the video signal by b slightly below the saturation level of the video camera or
video amplifier. To achieve the maximum dynamic range, adjust the intensity of the light source and/or
the gain and zero level of the video amplifier so that the red color corresponding to the brightest pixel
values just barely shows up.
Rainbow: Applies a color palette where the entries are evenly distributed along the Hue axis. This allows for
assigning different color pigments to different levels of intensity.
Spectra: Applies a color palette where the entries are distributed along the Hue and Luminance axes. That allows
for assigning different color pigments to different levels of intensity while preserving the luminance scale.
ous m
ringing it
180
Isodense : Applies the 256-level grayscale palette, each 8-th entry of which is colorized. The isodense palette allows
you to clearly see transitions between different levels of intensities as isolines on a topographic map.
Multiphase : Applies the multiphase palette. Entries in the multiphase palette are at opposite ends of the color model so
even small changes in gray levels are highlighted.
Random : Applies the random color palette whose entries are filled with random values each time you select it from
the list. This option is equivalent to the Palette property.
181
3.4.2. Format
This property page is used to select the properties specifying the format and synchronization options of the video.
Select from the following options:
Video mode
Use this option to select the desired video mode from the list of modes available for the current camera. In addition to
standard modes defined by the DCAM 1.30 specifications, camera-dependent partial scan modes (Format 7) can be
available at the bottom of the list. Equivalent to the Mode property.
Frame rate
Lets you choose the frame rate available for the currently selected Mode. Select among the following possible frame rates:
1.875 fps, 3.75 fps, 7.5 fps, 15 fps, 30 fps, 60 fps. If one of the partial scan modes (Format 7) is selected, this option will
be unavailable, as the frame rate will depend on the size of the scan window and Packet size. Equivalent to the Rate
property.
Packet size
Use this option to select the number of bytes in an isochronous packet. This option is available only for partial scan (Format
7) modes and related but not necessarily indicative of the effective frame rate. Equivalent to the PacketSize property.
Partial scan
Lets you change the size and position of the image window in a partial scan (Format 7) mode. To modify the size and
position of the window, enter the desired values for the image width, height, left coordinate and top coordinate in pixels.
Equivalent to the SizeX, SizeY, StartX, StartY properties.
16-bit swap
Select this box to change the order of bytes in incoming camera frames. While outputting 16-bit pixels, some cameras can
place the most significan bits of each pixel in the high-order bytes and the least significant bits in the low-order bytes. If
this happens, the live image will appear scrambled. Checking this box will restore the original pixel values. Equivalent to the
SwapBytes property.
16-bit shift
Select the number of positions for the right bit shift to be applied to 16-bit pixel values in the image buffer. When displaying
and saving 16- and 48-bit images, Prontocam assumes that pixel values are mapped to the entire 16-bit dynamic range (0-
182
65535). Certain cameras however may output data in narrower dynamic range resulting in dark images. Selecting a non-
zero bit shift will cause real-time remapping of image data. Equivalent to the BitShift property.
183
3.4.3. Exposure
This property page is used to select the properties specifying the display features of the video. Select from the following
options:
Brightness
Move the slider to adjust the brightness (black level) of the video. Note that this option is available only for the cameras
that support the software brightness control.. Equivalent t ess property.
Shutter
Move this slider to adjust the integration time of the incoming light. Note that this option is available only for the cameras
that support the software shutter contro valent to the Shutter property.
Gain
Move this slider to adjust the camera circuit gain control. Note that this option is available only for the cameras that support
the software gain control. Equivalent to the Gain property.
Iris
Move this slider to adjust the iris (mechanical apperture) of the camera lens. Note that this option is available only for the
cameras that support the software iris control. Equivalent to the Iris property. Each of the sliders has a corresponding check
box Auto located on the right. If such a box i m auto rresponding
feature. Checking the box will put the camera to the continuous automatic control of the feature, unchecking it will restore
the manual control.
Auto Exposure
Select this option to put the camera in the AE mode. When the auto ex mo the camera will
automatically control the exposure by keeping Shutter, Gain and/or Iris at optimal levels. The reference value for auto
exposure can be adjusted by moving the slider next to the check box. Both options are available only if the currently
selected camera supports auto exposure control. Equivalent to the AutoExposure and AutoExposureRef properties.
o the Brightn
l. Equi
s enabled, the ca era supports an matic mode for the co
posure de is activated,
184
3.4.4. Color
This property page is used to select the properties specifying the format and synchronization options of the video.
Select from the following options:
Saturation
Move the slider to adjust the color saturation of the video. Note that this option is available only for the cameras that
support the software saturation control.. Equivalent to turation property.
Hue
Move the slider to adjust the color phase the video. Note that this option is available only for the cameras that support the
software hue control.. Equivalent to the Hue property.
Both sliders has a corresponding check box Auto located on the right. If such a box is enabled, the camera supports an
automatic mode for the corresponding feature. Checking the box will put the camera to the continuous automatic control of
the feature, unchecking it will restore the manual control.
White balance
Move the U/B slider to adjust the the tint of the white color along the yellow-blue axis. Move the V/R slider to adjust the
the tint of the white color along the cyan-red axis. Select the Auto box to put the camera to the continuous
ite balan the One Push button to have the camera adjust the white balance level by itself and
return to the manual mode. Equivalent to the WhiteBalanceUB, WhiteBalanceVR and WhiteBalanceControl properties.
Bayer conversion
Select this option to activate the real-time color conversion of a grayscale video generated by a Bayer camera. The Bayer
list lets you select the specific Bayer conversion algorithm. The CCD layout o om the Layout
list. Both options are available only for monochrome video modes. See Bayer and BayerLayout for more information.
the Sa
automatic
control of the wh ce. Click
f the camera can be selected fr
185
3.4.5. Advanced
This property page is used to select the properties specifying the format and synchronization options of the video
Select from the following options:
Gamma
Move the slider to adjust the gamma level of the video. The gamma correction modifies an image by applying standard,
nonlinear gamma curves to the intensity scale. To lighten an image and increase the contrast in its darker areas, increase
the gamma by moving the slider to the right. To darken the image and emphasize the contrast in the lighter areas,
decrease in the gamma by moving the slider to the left. Note that this option is available only for the cameras that support
the software gamma control. Equivalent to the Gamma property.
Sharpness
Move the slider to adjust the sharpness of the video. Note that this option is available only for the cameras that support the
software sharpness control.. Equivalent to the Sharpness property.
Focus
Move the slider to adjust the camera lens to the subject distance. Note that this option is available only for the cameras that
support the software focus control.. Equivalent to the Focus property.
Zoom
Move the slider to adjust the optical zoom of the camera lens. Note that this option is available only for the cameras that
support the software zoom control.. Equivalent to the Zoom property. Each of the sliders has a corresponding check box
Auto located on the right. If such a box is enabled, the camera supports an automatic mode for the corresponding feature.
Checking the box will put the camera to the continuous automatic control of the feature, unchecking it will restore the
manual control.
Register
Lets you perform asynronous reads and writes to a selected register in the camera 1394 address space. To perform the
read operation, enter the desired hexadecimal offset to the Offset filed and click the Read button. The offset should be
given relative to the 1394 base address FFFF:00000000 h. The result will be displayed in the Hex Value box. To perform
the write operation, enter a desired offset and 32-bit hexadecimal value to the Offset and Hex Value fields respectively,
and then press the Write button. Use the Refresh button to synchronize Prontocam properties with possible changes in
the camera settings that might have occured after changing the values of 1394 registers. Equivalent to the ReadRegister,
WriteRegister and LoadChannel methods.
186
Memory channel
Select the internal EEPROM channel for loading or storing camera settings. Use the Save button to write the current setting
to the internal camera memory. Use the Load button to load the settings from the internal memory. Channel 0 corresponds
to the default factory settings and cannot be overwriten. Equivalent to the LoadChannel and SaveChannel methods.
Save image
Lets you save the current frame buffer in an image file. When you click this button, the Save As dialog box will appear
where you can select the file name and one of the image file formats: BMP, TIF and JPEG. Note that BMP and TIF files will
be recorded with no compression while JPEG files will be recorded with quality 75. Equivalent to the SaveImage method.
187
4. Samples The Prontocam distribution package includes the following sample applications:
Programming Language Project Name Description
Dcam Profile Live image preview, real time pixel values, real-time line profile
MultiDcam Multiple camera viewer (up to 4 simultaneously running cameras)
VBProcess Live image processing with direct pixel manipulation in the frame
buffer
Visual Basic 6.0
Dcam Live image in PictureBox object, pixel values at cursor
coordinates, fps display, using Prontocam by reference
ByRef
Visual C++, MFC ActiveDemo Live image preview, real time pixel values, real-time line profile,
saving image into file, continuous capture into multiple frames
Visual C++, Win32 API DcamWin Live image preview using DIB rendering, built-in and custom
camera controls, saving image into file. Written in C with Win32
API (no MFC used)
DcamOverlay Flipped video preview, pseudo-coloring, pixel window extraction,
overlay animation
VB.NET
DcamCapture Time-lapse video capture to AVI files or series of images,
overlayed frame counter
DcamSharp Image and pixel viewer with custom camera controls: selection
among multiple cameras, video modes and frame rates, pseudo-
color display, realtime shutter and gain control, mouse event
handling
Visual C#
FilterSharp Direct access to the frame buffer using pointers, real-time
Emboss filter, nondestructive color overlay, interactive drawing
HTML TryProntocam.html Web page with an integrated Dcam viewer
Note that VB.NET and Visual C# samples utilize .NET Framework. Make sure it is installed on your system before using
these samples. In addition DcamOverlay and DcamSharp samples assume the presense of MSCOMM32.ocx on the system.
All the samples include complete source code and executables which can be run with any DCAMcompatible camera out of
the box. Simply connect one or more cameras to your system, start an application of your choice and see how Prontocam
performs in real world!
188
5. TWAIN DCAM TWAIN driver allows Windows users to view and capture images in TWAIN-compliant graphic editing and scientific
imaging applications such as Photoshop, Image Pro and others. Depending on the selected video mode, the TWAIN driver
can capture images in 8- or 16-bit monochrome and 24- or 48-bit RGB format.
The driver is automatically installed on your system during Prontocam Installation. To use 1394 cameras via a TWAIN
compliant imaging application (e.g. Photoshop, Image Pro etc.), you must first set FireWire Digital Camera as the
default TWAIN source.
① Open the TWAIN compiant application (e.g. Photoshop, Image Pro etc.)
② Specify the TWAIN source that you want to interface with. The procedure for this step will var n
the software you are using, but you should see a list of TWAIN devices.
③ Chose FireWire Digital Camera.
④ Open the TWAIN interface. This step also varies depending on the software. The ProntoTWAIN window will
appear as shown below.
y depending o
The user interface of the TWAIN driver includes the following buttons and controls:
Capture :
Captures the current video frame into the application.
Live
Switches the camera into the continuous acquisition mode and initiates live preview.
Freeze
Stops the acquisition from the camera and freezes the last video frame in the image window.
189
Zoom in
Click this button to increase the magnification of the image.
Zoom out
Click this button to decrease the magnification of the image.
Fit to screen
Click this button to change the magnification factor of the image so that it fits to the image window.
Settings
Click this button to display Prontocam Property Pages.
Video mode
Use this option to select the desired video mode from the list of modes available for the current camera. In addition to
standard modes defined by the DCAM 1.30 specifications, camera-dependent partial scan modes (Format 7) can be
available at the bottom of the list.
Frame rate
Lets you choose the frame rate available for the currently selected video mode. Select among the following possible frame
rates: 1.875 fps, 3.75 fps, 7.5 fps, 15 fps, 30 fps, 60 fps. If one of the partial scan modes (Format 7) is selected, this option
will be unavailable.
190
6. Troubleshooting Below is the list of the most frequently encountered issues and remedies for their resolutions:
Problem Description Cause and Resolution
The camera is not receiving
Power
This is a typical issue for notebook computers that do
not provide power to external 1394 devices. Use a
FireWire hub or DC power cable to connect your
camera to a laptop.
1394 Digital Camera driver is
not installed for the camera.
Prontocam will not work with a system driver provided
by your camera manufacturer. Refer to Driver Setup
for the DCAM driver installation procedure.
The camera is not
recognized by Prontocam.
"No DCAM camera found"
message appears in the
control window.
The camera is not
DCAMcompliant.
Prontocam only works with IIDC-1.30 and -1.31
compliant cameras. Noncompliant cameras (such as
DVcamcorders) will not be recognized by Prontocam.
The camera and 1394 board
have a compatibility problem.
Some 1394 boards/chipsets are known not to perform
well with certain models of 1394 cameras. For
example, Hitachi cameras have trouble running with
Adaptec and Matrox boards. Replace your board with a
board recommended by your camera manufacturer.
Live video occasionally
freezes. After restarting the
application "Error in the
system 1394 driver" appears
in the control window. In
some cases system reboot is
required.
The computer/board/cabling
has an intermittent hardware
issue
Replace the cable or try to run the camera/software on
a different system.
The camera and 1394 board
have a compatibility problem.
See the solution above.
The processor has an
extensive latency in the C3
power state transition.
This problem is common for notebook computers. To
correct the latency setting, run C3State.reg file located
in the Driver folder. Restart the system for the changes
to take effect.
The video is corrupted
(frames are broken into
parts, jittering occurs or
synchronization is lost).
Some video formats and
frame rates do not work.
You are running Windows XP
SP2 and the camera is
connected to 1394b board.
Run the following fix from Microsoft:
TUhttp://support.microsoft.com/kb/885222UT
When switching to certain
video modes, I get blank
screen.
Some cameras require turning
the acquisition off while
switching between video
modes.
Turn the acquisition off by setting the Acquire property
to off, then select the desired video mode and turn the
acquisition on.
VB.NET and C# sample
applications do not work.
.NET framework is not installed
on the system
Install the latest .NET framework from Microsoft:
TUhttp://msdn.microsoft.com/netframework/default.aspx UT
When I run a live video
application from within
Visual Studio.NET,
everything freezes.
Live video is active in the
Design mode. Visual
Studio.NET doesn't close the
designer while starting the
application.
Prontocam cannot run two instances of live video
acquired from the same camera. Make sure to close
the design view before running your application. The
best way to avoid this problem is not to use live display
in the design mode except for testing purposes. You
can initiate acquisition in your code by setting the
Acquire property to true.
191
Problem Description Cause and Resolution
I am trying to do real-time
image processing in .NET,
and I experience a
significant drop in the frame
rate.
VB.NET and C# have
performance issues when
working with large arrays.
rameAcquired event has an
overhead that might affect the
performance
For performance boost, use unsafe code and pointers
to directly access Prontocam image buffer. A pointer to
the image buffer is provided by GetImagePointer. For
VB.NET, C# and C++ applications use FrameAcquiredX
event.
AVI files are not recorded in
real-time, many frames are
being dropped.
Your system does not provide
enough throughput or CPU
power to keep up with the
camera frame rate
Switch to a lower resolution mode or reduce the frame
rate. If you are using a Bayer camera, consider
recording the monochrome video instead of color one.
Alternatively, upgrade your system to a faster hard
drive and/or CPU.
Prontocam installation fails
with the following error:
"Prontocam.dll failed to
register, HRESULT -
2147220473"
This error is usually caused by
a corrupted registration of
atl.dll system file.
1. Locate atl.dll, generally found in
"C:₩WINNT₩system32" or
"C:₩WINDOWS₩system32".
2. Open the command-line prompt
· o Start Menu/Run
· o type "cmd"
· o press "ENTER"
3. Using the atl.dll filename and path, call regsvr32, i.e.
at the command-line prompt, type:
· o regsvr32
"C:₩WINNT₩system32₩atl.dll"
· o press "ENTER"
4. You should see a regsvr32 window, confirming
success: Close it.
5. Repeat Prontocam installation.