Computer Vision. VisionLab development environment. 25 August 2014
|
|
|
- Heather Rose
- 10 years ago
- Views:
Transcription
1 Computer Vision VisionLab development environment 25 August 2014 Copyright by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved Overview Development environments (general) VisionLab Overview of system Image types Co-ordinate system Dyadic operators Displaying of images Using camera File Drop Cam (*) File Cam (*) Image Logger (*) Online help Widgets Script language Speeding up scripts (*) Adding user script as operator (*) Adding user C++ operators (*) Adding a user plugin with new operators (*) Adding a C++ operator to the VisionLab server (*) Using VisionLab command interpreter in #C (*) 8/26/2014 VisionLab 2 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 1
2 Development environments (general) Image acquisition Library with standard operators Experiment with operators Interactive Scripts Graphical programming Add user defined operators Stand-alone applications Survey of 10 image processing packages by NHL and TNO TPD 8/26/2014 VisionLab 3 VisionLab Architecture Visionlab.exe (GUI client) tcp/ip cam1 VisionLib cam2 cam3 user extensions VisionCmd Vissvr.exe (server) Demo version can be downloaded from (Windows and Linux) 8/26/2014 VisionLab 4 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 2
3 VisionLab Architecture VisionLib: Library of more the 200 operators for image processing, classifying with neural networks and interfaces to cameras, written in ANSI C++. VisionCmd: Command interpreter for scripts. The scripts can be used for easy and fast development of applications or prototypes. VisionServer: Shell with a network interface around VisionCmd. With VisionServer it is possible to communicate over the internet with a remote VisionCmd. VisionClient: Graphical user interface with which it is possible to experiment in a comfortable way with the VisionLib library and to develop and test scripts. An online help is available. VisionLibDLL: Dll library around VisionCmd, making it accessible other languages. Delphi wrapper is available. VisionLibNet:.NET class wrapper around VisionLibDLL, making it accessible by all.net languages. VisionLibPugIn: PlugIn system for dlls to extend the command interpreter. 8/26/2014 VisionLab 5 Demonstration VisionLab Start-up VisionLab Show console server Explain Server Log window of client Open circles.jl and show server/client communication Demonstrate opening of *.bmp image, is automatically converted to RGB888Image, use dark_flower.bmp in images directory NOTE: VisionLab does NOT allow for space in names of directories and file names!! Source image circles.jl: Lex van de Voort van de Kleij (NHL) 8/26/2014 VisionLab 6 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 3
4 Demonstration VisionLab 8/26/2014 VisionLab 7 Open *.bmp image 8/26/2014 VisionLab 8 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 4
5 Conversion to RGB888Image 8/26/2014 VisionLab 9 Image types (*) Class hierarchy using templates: Image NumImage<Pixel> OrdImage<Pixel> ComplexImage<Pixel> ColorImage<Pixel> IntImage<Pixel> RealImage<Pixel> 8/26/2014 VisionLab 10 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 5
6 Image types Image NumImage<Pixel>: OrdImage<Pixel>: IntImage<Pixel>: ByteImage Int8Image Int16Image Int32Image RealImage<Pixel>: FloatImage DoubleImage ColorImage<Pixel>: RGB888Image, RGB161616Image HSV888Image, HSV161616Image YUV888Image, YUV161616Image ComplexImage<Pixel>: ComplexFloatImage ComplexDoubleImage 8/26/2014 VisionLab 11 Conversion between Image Types 8/26/2014 VisionLab 12 Jaap van de Loosdrecht, NHL, vdlmv, 6
7 Co-ordinate system and Dyadic operators Co-ordinate system Origin: top left corner X values increase from left to right Y values increase from top to bottom Dyadic operators: Use select second 8/26/2014 VisionLab 13 Demonstration co-ordinate system and DisplayLUTs Show co-ordinate system with Edit Demonstrate select second : DisplayLUT for Int16Image = Stretch Copy circles Add the two images No visible difference! Show pixel values of both images with Edit Explanation in slide about DisplayLUTs 8/26/2014 VisionLab 14 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 7
8 Demonstration co-ordinate system 8/26/2014 VisionLab 15 Add images using select 2nd 8/26/2014 VisionLab 16 Jaap van de Loosdrecht, NHL, vdlmv, 8
9 Displaying of images Server: List of images on which operations act GUI client: Display image with use of LookUp Table (LUT) 8/26/2014 VisionLab 17 Demonstration of displaying of images Show list of images on server Client is stupid, it knows nothing about vision operators Client can only translate commands and display images All vision intelligence is in the server Demonstrate applying different LUT s on image, see next slide 8/26/2014 VisionLab 18 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 9
10 List of images on server 8/26/2014 VisionLab 19 Set LUT for result image to Clip 8/26/2014 VisionLab 20 Jaap van de Loosdrecht, NHL, vdlmv, 10
11 See result of adding the two images 8/26/2014 VisionLab 21 Displaying of images DisplayLUT s (LUT = LookUpTable): IntImage Stretch Clip Labelled Binary FloatImage Linear Logarithmic ColorImage in colour depending on screen settings ComplexImage power spectrum displayed as FloatImage 8/26/2014 VisionLab 22 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 11
12 Change reduce factor with scroll wheel or + or - button 8/26/2014 VisionLab 23 Camera setup Multiple camera s Multiple windows (ROI s) per camera Dynamic loading of parameters Support for: Fire wire (FirePackage) IDS ueye XIMEA File cam Microsoft Media Foundation Interface web cams Open camera interface, easy to add new camera s or frame grabbers Camera recorder 8/26/2014 VisionLab 24 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 12
13 Select camera 8/26/2014 VisionLab 25 Set init string, select mode 8/26/2014 VisionLab 26 Jaap van de Loosdrecht, NHL, vdlmv, 13
14 Ready for taking snapshot 8/26/2014 VisionLab 27 Exercise Experiment with camera setup 8/26/2014 VisionLab 28 Jaap van de Loosdrecht, NHL, vdlmv, 14
15 File Drop Camera (*) Used as a rudimentary interface to cameras who are able to write bmp or jpg images to file with a file name and a sequence number. The file name consists of a <File base name> + <sequence nr> +. + <File extension>. The sequence nr is padded with leading 0's if <nr of digits> is greater then 0. After pressing the start button the image with the specified filename is searched for. If the specified file is not found, processing is postponed until the specified file is created. If the file is found or created: - the image is opened and displayed - the image is selected as script image (%current image) - the script with <Script name> is executed with the specified <Parameters> the function result of the script is assigned to the specified <Result> variable - <Sequence nr> is incremented - the search or wait for the next image starts 8/26/2014 VisionLab 29 Demonstration File Drop Camera (*) Move file filedropcam2.bmp from directory to the desktop, leave filedropcam1.bmp in current directory Open File Drop Cam form in Camera menu Specify the parameters as in the next slide Press start button File filedropcam1.bmp is in current directory, so the image is opened and selected as %currentimage and script filedropscript.jls is executed Because file filedropcam2.bmp is in not in the specified directory, processing is postponed. Drop file filedropcam2.bmp back in specified directory, processing continues, image is opened and script is executed 8/26/2014 VisionLab 30 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 15
16 File Drop Cam form in Camera menu (*) 8/26/2014 VisionLab 31 Image is opened %currentimage and script is executed (*) %p1 = 1, %p2 = 2 %currentimage is referring to opened image function result is stored in $vvv 8/26/2014 VisionLab 32 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 16
17 Wait for drop file filedropcam2.bmp back in specified directory (*) 8/26/2014 VisionLab 33 File dropcam2.bmp is processed (*) 8/26/2014 VisionLab 34 Jaap van de Loosdrecht, NHL, vdlmv, 17
18 FileCam (*) FileCam is used to 'snapshot' images from a file from disk. The init string should be used to specify in which mode the camera is operated. Syntax: <imagetype > <filename> The file is in normal text file with on each line the file name of an jl image. It is adviced to use a fully specified file names including the full direcory path. Snapshoting will start from the first image in the file. If more snapshots are taken then images specified in the file, snapshoting will start again from the first image Use the command LastFileCamName to retrieve the filename of the last snapshot image. 8/26/2014 VisionLab 35 Example: using a FileCam (*) 8/26/2014 VisionLab 36 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 18
19 Example: using a FileCam (*) Specify filename with the file names of the images 8/26/2014 VisionLab 37 Example: using a FileCam (*) Use snapshot commands to get the images 8/26/2014 VisionLab 38 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 19
20 Image Logger (*) Intended to log images with additional string information During an experiment images with string information are stored in RAM memory. This will give only a slow delay in execution. After the experiment is finished, the images and strings can be stored to files for subsequent analysis. Operators: InitImageLogger CloseImageLogger ImageLoggerAdd ImageLoggerClear ImageLoggerSaveToFile ImageLoggerGetNth 8/26/2014 VisionLab 39 Image Logger (*) InitImageLogger imagetype loggertype maxnrframes height width maxstrsize disgard The InitImageLogger operator initialise the image logger. RAM memory for maxnrframes of image of imagetype and maxnrframes of strings of size maxstrsize is reserved. The loggertype parameter can be LinearImageLogger or CircularImageLogger. When the log of LinearImageLogger is full new added images and strings are ignored. When the log of a CircularImageLogger is full the oldest image and string are deleted and the new image an string are added. The disgard parameter specifies how many ImageLoggerAdd commands are ignored before an image and string are stored in RAM memory. CloseImageLogger The CloseImageLogger operator releases all allocated memory. 8/26/2014 VisionLab 40 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 20
21 Image Logger (*) ImageLoggerAdd imagename loggermode string The ImageLoggerAdd operator adds an image and string to the log. The parameter loggermode can have the values DisgardNImageLogger or ForceImageLogger. In DisgardNImageLogger mode disgard images are ignored before an image is stored in the log. In ForceImageLogger mode the image and string is always stored. ImageLoggerClear The ImageLoggerClear operator clears all logged images and strings. 8/26/2014 VisionLab 41 Image Logger (*) ImageLoggerSaveToFile filenamebase The ImageLoggerSaveToFile operator save all image to file. The parameter filenamebase is used to generate unique file names. The Nth image is saved as filenamebase_n.jl. The strings are saved in a file with name filenamebase.txt. The format of filenamebase.txt is one line for each image: <filename> <string>. ImageLoggerGetNth nth imagename The ImageLoggerGetNth operator retrieves the nth image in the log and makes a copy into image with imagename. The function result is the string associated string with the Nth image. 8/26/2014 VisionLab 42 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 21
22 Image Logger example script (*) $path = lpwd $oldpath = pwd cwd $path system del test log*.* InitImageLogger Int16Image CircularImageLogger Create image Int16Image SetAllPixels image 100 for $i = 1 to 25 do TextOnImage image 0 40 courier14 $i ImageLoggerAdd image DisgardNImageLogger $i endfor ImageLoggerSaveToFile test log $r = ImageLoggerGetNth 1 test Display test CloseImageLogger cwd $oldpath = $r 8/26/2014 VisionLab 43 Online help Online help is available: F1 Main menu 8/26/2014 VisionLab 44 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 22
23 Demonstration online help Search for Threshold operator Open image circles.jl Select threshold operator and press F1 for online help description operator and position in operator menu structure Select help from main menu Select Find in VisionLab help file window and type threshold C++ header file in System Development Kit 8/26/2014 VisionLab 45 Open image and select threshold operator 8/26/2014 VisionLab 46 Jaap van de Loosdrecht, NHL, vdlmv, 23
24 Press F1 for help for Threshold (GUI) 8/26/2014 VisionLab 47 Select help from main menu 8/26/2014 VisionLab 48 Jaap van de Loosdrecht, NHL, vdlmv, 24
25 Select Find in VisionLab help file window 8/26/2014 VisionLab 49 Help for Threshold (SDK) (*) 8/26/2014 VisionLab 50 Jaap van de Loosdrecht, NHL, vdlmv, 25
26 Help for Threshold (SDK) (*) 8/26/2014 VisionLab 51 Widgets Several operators need as parameter one or more pixel coordinates. The widget tools will help the user to specify the pixel coordinates in an interactive way. Before selecting the desired operator, the widget tool must be selected. This tool will display a grid on the image. The grid can be manipulated by dragging and rotating the landmarks. After the grid is positioned at the desired position the operator is called from the menu. The landmarks are then extracted from the grid and displayed the corresponding parameter fields. Menu: Operator Widget tools 8/26/2014 VisionLab 52 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 26
27 Widgets Available widgets tools: LineTool: start coordinate and end coordinate of a line GridTool: four corner coordinates of deformable rectangle RasterTool: middlepoint coordinate, endline coordinate, endbox coordinate for scanlines CircleTool: center coordinate of circle and radius of circle PieTool: center coordinate of pie, start angle, end angle and radius of pie MinMaxCircleTool: center coordinate of circles, minradius and maxradius of circles 8/26/2014 VisionLab 53 Widgets Operators using widgets: CircleShape DiskShape DrawLine FindEdgeCircle FindEdgeLine FindSubEdge(s)OnLine HoughCircleTransforms HoughLineTransforms PolarStretch ResampleLine Warp CircleTool CircleTool LineTool MinMaxCircleTool RasterTool LineTool MinMaxCircleTool PieTool PieTool LineTool GridTool 8/26/2014 VisionLab 54 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 27
28 Line tool start coordinate end coordinate Result: start coordinate and end coordinate of a line 8/26/2014 VisionLab 55 Demo line tool Open image findedgeline1.jl Open grid tool from menu Operator Widget tools DrawLine Drag landmarks to position the line DrawLine operator from menu Operator Syntetic 8/26/2014 VisionLab 56 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 28
29 Drag landmarks to position the line 8/26/2014 VisionLab 57 DrawLine operator 8/26/2014 VisionLab 58 Jaap van de Loosdrecht, NHL, vdlmv, 29
30 Raster tool move Result: Coordinates of box rotate resize 8/26/2014 VisionLab 59 Demo raster grid tool Open image findedgeline1.jl Open grid tool from menu Operator Widget tools FindEdgeLine Drag landmarks to position Select FindEdgeLine operator from menu Operator EdgeDetection (line distance = 1, outlierdistance = 10, iteration = 10) 8/26/2014 VisionLab 60 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 30
31 Drag landmarks to position 8/26/2014 VisionLab 61 FindEdgeLine operator 8/26/2014 VisionLab 62 Jaap van de Loosdrecht, NHL, vdlmv, 31
32 Demo grid tool Open image lic_plate1.jl Open grid tool from menu Operator Widget tools Warp Drag landmarks to corners of license plate Select Warp operator from menu Operator Geometry 8/26/2014 VisionLab 63 Grid tool move drag 8/26/2014 VisionLab 64 Jaap van de Loosdrecht, NHL, vdlmv, 32
33 Grid tool: drag landmarks to corners 8/26/2014 VisionLab 65 Grid tool: correct for warp 8/26/2014 VisionLab 66 Jaap van de Loosdrecht, NHL, vdlmv, 33
34 Circle tool Start angle move resize 8/26/2014 VisionLab 67 Demo circle tool Open image circles.jl Open circle tool from menu Operator Widget tools CircleAndDiskShape Drag landmarks to desired position Select CircleShape operator from menu Operator Synthetic (value = 255, zeroororg = KeepOriginal) 8/26/2014 VisionLab 68 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 34
35 Circle tool: CircleShape 8/26/2014 VisionLab 69 MinMaxCircleTool: two concentric circles resize inner circle move resize outer circle 8/26/2014 VisionLab 70 Jaap van de Loosdrecht, NHL, vdlmv, 35
36 Demo min max circle tool Open min max circles tool from menu Operator Widget tools HoughCircles Drag landmarks to desired position Select FindFastBestCircle operator from menu Operator Transforms (minedge = 500, deltar = 0.1) 8/26/2014 VisionLab 71 MinMaxCircleTool: FindBestCircle with minr.. maxr (x,y) radius nrhits 8/26/2014 VisionLab 72 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 36
37 Pie tool: slice of a circle start segment radius end segment move 8/26/2014 VisionLab 73 Demo pie tool Open pie tool from menu Operator Widget tools PolarStretch Drag landmarks to desired position Select PolarStretch operator from menu Operator Transforms (minedge = 500, deltar = 0.1) 8/26/2014 VisionLab 74 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 37
38 Operator PolarStretch 8/26/2014 VisionLab 75 Script language Scripts can contain different kind of commands: image operators variables and expressions (*) control statements (*) internal commands (*) Speeding up scripts (*) special server commands (*) pre-processor commands (*) Calling scripts (procedure/function call): (*) Scripts can be added as new operators to GUI (*) 8/26/2014 VisionLab 76 Jaap van de Loosdrecht, NHL, vdlmv, 38
39 Demonstration script image operators Create new script, add the lines by selecting the operators from the menus (not necessary to type them): lread i circles.jl display i Execute script Insert with mouse threshold command, and adapt imagename, explain why Execute script Demonstrate convolution instead of threshold: convolution i ii gausian3x3 display ii Change to SobelNS by doubleclick on convolution line in script 8/26/2014 VisionLab 77 Example script 8/26/2014 VisionLab 78 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 39
40 Double click on line with convolution and 8/26/2014 VisionLab 79 select mask Sobel NS 8/26/2014 VisionLab 80 Jaap van de Loosdrecht, NHL, vdlmv, 40
41 Demonstration script variables and control statements This script calculates the average area of the selected blobs Open scripts ba_example.jls Open variable screen (Server menu Examine variables) Single step through script Notes: result is returned to an array with name tab Click on array name in top window of variable screen to examine details of array each element of the array contains a line with: <labelnr> followed with the specified measurements Each line is extracted from the array tab to an array elm The element with index 0 of array elm is the labelnr The element with index 1 of array elm is the area The element with index 2 of array elm is the formfactor 8/26/2014 VisionLab 81 Demonstration script variables and control statements 8/26/2014 VisionLab 82 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 41
42 Demonstration script variables and control statements 8/26/2014 VisionLab 83 Demonstration script variables and control statements 8/26/2014 VisionLab 84 Jaap van de Loosdrecht, NHL, vdlmv, 42
43 Demonstration script variables and control statements 8/26/2014 VisionLab 85 Exercise Experiment with scripts 8/26/2014 VisionLab 86 Jaap van de Loosdrecht, NHL, vdlmv, 43
44 Script variables (*) Variables are of type string. When necessary a conversion is applied to type integer, float or boolean. There are two type of variables: global: Scope is all scripts and outside the scripts. Lifetime is from creation to the moment it is removed explicitly by the user. The name of a global variable starts with one $ sign, example: $global local: scope and lifetime is the script in which the variable is created. The name of a local variable starts with two $ signs, example: $$local The value of the variables can be examined and modified with the 'Examine vars' item in the server menu. 8/26/2014 VisionLab 87 Demonstration script variables (*) open script script_vars.jls execute script open window 'Examine vars' in the server menu explain: Main menu Options Synchronize scripts 8/26/2014 VisionLab 88 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 44
45 Demonstration script variables (*) 8/26/2014 VisionLab 89 Array s of variables (*) Array's of variable are also possible using [ and ] for indexing First index = 0 Indexes must be either constants, variables or indexed arrays Expressions as index are not allowed $array is a short notation for $array[0] Example: $array[$i] = $array[$tab[0]] 8/26/2014 VisionLab 90 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 45
46 Array s of variables (*) Operators for manipulation of array's: ArrayToVar &$array &$var, convert array to var CopyVar &$src &$dest, copy array from src to dest GetDimVar &$array, result is dimension of array SetDimVar &$array dimension VarToArray &$var &$array, convert var to array, each word in var is new element in array ArrayToFile <filename> &$array ArrayFromFile <filename> &$array LArrayToFile <filename> &$array LArrayFromFile <filename> &$array 8/26/2014 VisionLab 91 Script expressions (*) Simple forms of expressions are possible: <var> = <var> <var> = <constant> <var> = <var> <operator <var> <var> = <var> <operator> <constant> Note there is not yet support for brackets ( ) in expressions. The following operators are supported: + - * / div mod and or! ==!= < <= > >=. 8/26/2014 VisionLab 92 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 46
47 Script expressions (*) Arithmetic and Boolean expressions are possible, use brackets ( ) for priorities in Boolean expressions. Note: all operators and must separated by spaces. Examples: $r = ($x + $v) * 4 $b =! ($b1 and (bt[$i] or $b2)) It is not possible to call a function in expressions. Prohibit evaluation by using, example: $cg = (10,15) 8/26/2014 VisionLab 93 Demonstration script expressions (*) open script script_expres.jls execute script open window 'Examine vars' in the server menu click continue script click continue script explain break(points), reset and single stepping scripts 8/26/2014 VisionLab 94 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 47
48 Demonstration script expressions (*) 8/26/2014 VisionLab 95 Demonstration script expressions (*) 8/26/2014 VisionLab 96 Jaap van de Loosdrecht, NHL, vdlmv, 48
49 Demonstration script expressions (*) 8/26/2014 VisionLab 97 Operators on variables (*) Operators: for string manipulation math operators for number manipulation Parameter types: by value, <var> by reference, <&var> Examples by value: $res = getfirstword $var by reference: $res = removefirstword &$var 8/26/2014 VisionLab 98 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 49
50 Parameter by value (*) 8/26/2014 VisionLab 99 Parameter by reference (*) 8/26/2014 VisionLab 100 Jaap van de Loosdrecht, NHL, vdlmv, 50
51 Operators for string manipulation (*) A variable can be initialized with a string using double quotes. Example: $s = "here are spaces allowed". is dyadic operator used for string concatenation. Note this operator is used for concatenation of chars in a word. If used as $v. $w, both $v and $w must be non empty variables with one word as value. Use for concatenation of words the string operator Concat. 8/26/2014 VisionLab 101 Operators for string manipulation (*) A variable can be initialised with a string using double quotes. Example: $s = "here are spaces allowed" getfirstword <var> getfirstnwords <n> <var> getnthword <n> <var> getnthfromvector <n> <var> getsizeofvector <var> vector <i1> <i2> <i3>... listallvars removefirstword <&var> removefirstnwords <n> <&var> removeuntilword <word> <&var> strip <&var> 8/26/2014 VisionLab 102 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 51
52 Operators for special string manipulation (*) getvar <&var> isequalvar <&var1> <&var2> removevar <&var> removeallvars setvar <&var> <value> isvar <varname without $> testequalvar <&var1> <&var2> concat <sequence of <var> and text> substr <&var> <offset> <count> length <&var> find <&str> <key> <offset>, find substring in string findfirstof <&str> <key> <offset>, find character in string findlastof <&str> <key> <offset >, find character in string For more details of operators, see online help 8/26/2014 VisionLab 103 Math operators for vars (*) asin <x> acos <x> atan <x> atan2 <y> <x> ceil <x> cos <x> cosh <x> exp <x> fabs <x> floattoint <x> floor <x> fmod <x> <y> initrandomgen <x> log <x> log10 <x> mod <x> <y> polarlinesintersection <pc1> <pc2> pow <x> <y> random <low> <high> randomint <low><high> sgn<x> sin <x> sinh <x> sqrt <x> tan <x> tanh <x> 8/26/2014 VisionLab 104 Jaap van de Loosdrecht, NHL, vdlmv, 52
53 Script control statements (*) Nesting to arbitrary depth is possible if <condition> then <statement block> else <statement block> endif while <condition> do <statement block> endwhile for<var> = <expression> (<to> <downto>) <expression> do <statement block> endfor 8/26/2014 VisionLab 105 Script control statements (*) switch <expression> case <tag> <statement block> case <tag> <statement block> default <statement block> endswitch label <labelname> goto <labelname> 8/26/2014 VisionLab 106 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 53
54 Script control statements (*) return <expression> // function return notes about string result conventions in VisionLab: - in case of errors string starts with "[<name of command>]", so '[' and ']' can NOT be used in normal string results - "{xxx us} is append for timing information, so '{' and '}' can NOT be used in normal string results 8/26/2014 VisionLab 107 Demonstration script control statements (*) open script script_stat.jls execute script open window 'Examine vars' in the server menu click continue script click continue script 8/26/2014 VisionLab 108 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 54
55 Demonstration script control statements (*) 8/26/2014 VisionLab 109 Demonstration script control statements (*) 8/26/2014 VisionLab 110 Jaap van de Loosdrecht, NHL, vdlmv, 55
56 Demonstration script control statements (*) 8/26/2014 VisionLab 111 Internal commands (*) Internal commands are special local commands for which there is not a (direct) server command. Examples : lcwd <path>: change working directory of client to path lpwd: return working directory of client. lread <imagename> <filename>: The file with <filename> is read on the client and added to the server as image with <imagename> lwrite <imagename> <filename>: The image with <imagename> is written on the client as file with <filename> display <name>: The image with <name> is displayed GUIForm: create dialog box from script see also on-line help for more examples 8/26/2014 VisionLab 112 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 56
57 Demonstration GUIForm: create dialog box from script (*) GUIForm <caption> {<spinedit> <editbox>} Displays a dynamic form from a script in order to query the user with inputs, result is a string with the answers. - spinedit: <prompt> <default> <low> <high> A spinedit field is added to the form with a prompt and a default value. Low and high specify the extreme possible values. - editbox: <prompt> <default> An editfield is added to the form with a prompt and a default value. 8/26/2014 VisionLab 113 Demonstration GUIForm: create dialog box from script (*) 8/26/2014 VisionLab 114 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 57
58 Demonstration GUIForm: execute script (*) 8/26/2014 VisionLab 115 Demonstration GUIForm: examine result variable (*) 8/26/2014 VisionLab 116 Jaap van de Loosdrecht, NHL, vdlmv, 58
59 Special server commands (*) Examples : cwd <path>: change working directory of server to path pwd: return working directory of server read <imagename> <filename>: The file with <filename> is read on the server and added to the server as image with <imagename> write <imagename> <filename>: The image with <imagename> is written on the server as file with <filename> Date and time command, see next slide see also on-line help for more examples 8/26/2014 VisionLab 117 Date and time commands (*) Time: returns <day> <month> <dayinmonth> <hh:mm:ss> <year> Delay <secs>: delay operations for secs seconds time. MicroDelay <us>: delay operations for us micro-seconds time. MilliDelay <ms>: delay operations for ms milli-seconds time. ResetTimeStamp: reset time stamp counter to zero MicroTimeStamp: return a time stamp in micro seconds, note: maximum time for overflow after reset is 35 minutes. MilliTimeStamp: return a time stamp in mille seconds, note: maximum time for overflow after reset is 583 hours. 8/26/2014 VisionLab 118 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 59
60 Pre-processor commands (*) A command is pre-processed before it is executed. The following pre-processor commands are only available in the client: %currentimage: this command is replaced with the name of the current selected image or the name of the image selected as script image %secondimage: this command is replaced with the name of the image selected as second image %thirdimage: this command is replaced with the name of the image selected as third image %startupdir: directory name from which the client has been launched 8/26/2014 VisionLab 119 Script procedure calls (*) There are three different kind of scripts: local scripts: script is executed in the client or called with the lcall command from a script executed in the client remote file scripts: script is executed in the server. Script is started with a call <remote filename> <params> command internal script: script is executed in the server. Before being started with a icall <internal scriptname> <params> command the script has to be stored in the server With the command IsServerScript can be tested whether a script is running on the client side or server side. Function result is true or false. 8/26/2014 VisionLab 120 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 60
61 Script procedure calls (*) The formal parameters have the form %pn, where n starts at 1 The first parameter is %p1, the next %p2 etc Arrays can be passed as actual parameters using &$arrayname. A script can return a function result with the return command return <function result> Local scripts can be aborted with <control y> 8/26/2014 VisionLab 121 Demonstration script procedure calls (*) open script script_call.jls click single step click single step click step into click single step click single step open window 'Examine vars' in the server menu click continue script 8/26/2014 VisionLab 122 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 61
62 Demonstration script procedure calls (*) 8/26/2014 VisionLab 123 Demonstration script procedure calls (*) 8/26/2014 VisionLab 124 Jaap van de Loosdrecht, NHL, vdlmv, 62
63 Demonstration script procedure calls (*) 8/26/2014 VisionLab 125 Array as parameters, method 1 (*) Main: $arr[0] = 1 $arr[1] = 2 lcall arrayparam.jls &$arr arrayparams2.jls: CopyVar %p1 &$res 8/26/2014 VisionLab 126 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 63
64 Array as parameters, method 2 (*) Main: $arr[0] = 1 $arr[1] = 2 lcall arrayparam2.jls arr arrayparams2.jls: CopyVar &$%p1 &$res 8/26/2014 VisionLab 127 Speeding up scripts (*) Using internal scripts System settings Disable client logging Disable server logging Disable history mechanism 8/26/2014 VisionLab 128 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 64
65 Demonstration speed up by using internal script (*) open script internal_example.jls run script to first break point examine variables examine script intern_script.jls run (continue) second part of script and compare executing times $time_local = 6411 ms $time_intern = 176 ms Note: this example is just to demonstrate internal scripts. A much faster way to calculate the average area is to count the number of object pixels and divide this number with the number of object 8/26/2014 VisionLab 129 open script internal_example.jls (*) 8/26/2014 VisionLab 130 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 65
66 run script to first break point (*) 8/26/2014 VisionLab 131 examine script intern_script.jls (*) 8/26/2014 VisionLab 132 Jaap van de Loosdrecht, NHL, vdlmv, 66
67 run second part of script and compare executing times(*) 8/26/2014 VisionLab 133 Speeding up scripts (*) System settings Disable client logging: set in main menu item server log to no log Disable server logging and Disable history mechanism: close visionlab open file visionlab.ini search in file for [localserver] next line has item exename with syntax vissvr.exe <port> <byteorder> <timeout> <maxhissize> <EchoOn EchoOff> <(no)debug> set <maxhissize> to 0 set <EchoOn EchoOff> to EchoOff example: exename=vissvr.exe 2066 NativeByteOrder 5 0 EchoOff nodebug save and close file visionlab.ini start VisionLab again 8/26/2014 VisionLab 134 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 67
68 Adding a script as new operator (*) New operators can be added to the system by editing the file visionlab.ini. See for more details Adding a new operator to the client Example: An operator with the name Script must be added to the usermenu. When the operator is selected the script with name test.jls is to be executed and it will receive three parameters. In order to make this possible add the following lines to the file visionlab.ini and startup the system. [examplescript] menu=usermenu caption=example &Script class=intimage script=test.jls paramform=scriptparam selectedimage source editbox low 0 editbox high 80 8/26/2014 VisionLab 135 Adding a script as new operator (*) Explanation: [examplescript]: In [ ] the name of the operator. Note: no white space behind ] is allowed. menu: The menu where the operator is added to the system. caption: The name used for the operator in the menu. The & give the letter for the shortkey. class: The highest class in the Image hierarchy overview on which the operator can work. script: The filename of the script which is to be executed. paramform: Specifies the form which to be used to ask the user for the parameters. Currently for user scripts only 'scriptparam' is supported. 8/26/2014 VisionLab 136 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 68
69 Adding a script as new operator (*) The section following paramform specifies the parameters for the operator. The maximal number of parameters is 25. The parameters are displayed and send to the server in the same order as they are declared. There are the following possibilities: selectedimage <prompt>: An edit field is added with a prompt and the image name of the currently selected image 2ndselected <prompt>: An edit field is added with a prompt and the image name of the 2ndselected image 3rdselected <prompt>: An edit field is added with a prompt and the image name of the 3rdselected image. genimagename <prompt>: An edit field is added with a prompt and a generated image name spinedit <prompt> <default> <low> <high>: A spinedit field is added with a prompt and a default value. Low and high specify the extreme possible values 8/26/2014 VisionLab 137 Adding a script as new operator (*) editbox <prompt> <default>: An edit field is added with a prompt and a default value combobox <prompt> <default> <item1>... <itemn>: A combo box is added with a prompt and a default value. The combobox is filled with the specified items. If prompt equals to 'none' combobox is invisible 8/26/2014 VisionLab 138 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 69
70 Example: Adding an own script as operator (*) Demonstrate own_script.jls in User Menu item example script on circles.jl and look at vislab.ini for added script as new operator. 8/26/2014 VisionLab 139 Example: Adding an own script as operator (*) 8/26/2014 VisionLab 140 Jaap van de Loosdrecht, NHL, vdlmv, 70
71 VisionLab.ini configuration file (*) 8/26/2014 VisionLab 141 Adding script own_script.jls as operator in visionlab.ini (*) 8/26/2014 VisionLab 142 Jaap van de Loosdrecht, NHL, vdlmv, 71
72 Adding a user C++ operator (*) Add new operator to server to set all pixels to same value Write new operator in C++ (UserSetAll) Write envelope for operator (SetAllCmd) Add envelope to cmd interpreter (Main in visserv.cpp) Command send to server will be: usersetall <image name> <pixel value> The server will use the first word as name of the command ( usersetall ) and will use this name to find the associated envelope function SetAllCmd SetAllCmd will get as input stream the command without the first word: <image name> <pixel value> SetAllCmd will: read the image name and pixel value from the inputs stream check whether image name is a valid image call UserSetAll with image and value as parameter the call to usersetall is surrounded with timer functions which supports the displaying of the time needed for the operation in the left bottom corner of the GUI The call AddLastCmdToHistory adds the command to the history list of the image Add new operator to GUI Edit vislab.ini See for example the files in the src directory of the SDK: useroper.h, useroper.cpp and visserv.cpp 8/26/2014 VisionLab 143 Adding a C++ operator to the VisionLab server (*) Visionlab.exe (GUI client) tcp/ip cam1 VisionLib cam2 cam3 user extensions VisionCmd Vissvr.exe (server) The new operator is added in the next example in the module useroper.cpp See for files, the solution vissvr.sln 8/26/2014 VisionLab 144 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 72
73 Useroper.cpp (*) // The operator to be added void UserSetAll (Int16Image &image, const Int16Pixel pixel) { for (int y = 0; y < image.getheight(); y++) { for (int x = 0; x < image.getwidth(); x++) { image(x,y) = pixel; } // for x } // for y } // UserSetAll // the following code envelope is necessary to add the new operator to the server static void SetAllCmd (istream &is, ostream &os, VisLibCmdInt &cmdint) { QString imagename; Int16Pixel pixel; is >> imagename >> pixel; if (is.fail()) throw(error("[setall] input error")); if (CheckIsInt16Image(cmdInt, imagename, os)) { Int16Image *src = dynamic_cast <Int16Image *>(cmdint.getimage(imagename)); cmdint.starttimer(); UserSetAll (*src, pixel); cmdint.stoptimer(); cmdint.addlastcmdtohistory (imagename); os << "example of a result string"; } } // SetAllCmd Example operator to set all pixels to same value Example string send to the command interpreter: usersetall image 100 // called by the main program void InsertUserOperCmds (VisLibCmdInt &cmdint) { cmdint.insertcmd ("usersetall", CmdIntCommand(SetAllCmd, cmdint), "<imagename> <pixelvalue>"); } // InsertUserOperCmds 8/26/2014 VisionLab 145 Vissvr.cpp (*) int main (int argc, char *argv[ ]) { VisLibCmdInt cmdint ( ); VisLibSvr server(cmdint, ); // register camera's RegisterDummyCam(cmdInt); //RegisterFirePackCam(cmdInt); //RegisterTeliCam(cmdInt); //RegisterFireCam(cmdInt); //RegisterSKCam(cmdInt); //RegisterGCam(cmdInt); RegisterDXCam(cmdInt); InsertUserOperCmds (cmdint); // simple user defined operator server.run();. } // main 8/26/2014 VisionLab 146 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 73
74 Vissvr.cpp (*) You need to adapt the source if you want to use an another camera interface /* How to add camera support to this component: * DXCam: * - add "RegisterDXCam(*cmdInt);" to DllMain * - add dxcam.lib from the ReleaseLib directory to this project * - build the project * Firewire FirePack: * - add "RegisterFirePackCam(*cmdInt);" to main * - add firepack.lib from the ReleaseLib directory to this project * - build the project * Gen<I>Cam with GenTL: * - add "RegisterJL_GenICam(*cmdInt);" to main * - add genicam.lib from the ReleaseLib directory to this project * - build the project */ 8/26/2014 VisionLab 147 useroper.h (*) 8/26/2014 VisionLab 148 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 74
75 useroper.cpp (*) the operator to add the envelope function to be called from main 8/26/2014 VisionLab 149 visserv.cpp (*) 8/26/2014 VisionLab 150 Jaap van de Loosdrecht, NHL, vdlmv, 75
76 Add new operator to GUI (*) 8/26/2014 VisionLab 151 Adding a new C++ operator to the client (*) New operators can be added to the client by editing the file visionlab.ini. The new operators will be active the next time the system is started. The descriptor for the operator with name usersetall looks like: [usersetall] menu=user1menu caption=&user Set All class=intimage help=0 shortcut=none command=usersetall source=copy result=image paramform=varparam selectedimage image spinedit pixel /26/2014 VisionLab 152 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 76
77 Adding a new C++ operator to the client (*) [usersetall]: In [ ] the name of the operator. Note: no white space behind ] is allowed. menu: The menu where the operator is added to the system. caption: The name used for the operator in the menu. The & give the letter for the shortkey. class: The highest class in the Image hierarchy overview on which the operator can work, or "NoImage" if operator does not work with images. shortcut: The name for a key on the keyboard, which can activate the operator without using the menu. Possible values: none, ctrl+a,.. ctrl+z, f1,.. f12, ctrl+f1,.. ctrl+f12, shift+f1,.. shift+f12, shift+ctrl+f1,.. shift+ctrl+f12, ins, shift+ins, ctrl+ins, del, shift+del, ctrl+del, alt+bksp and shift+alt+bksp. command: The command name which is sent to the server. 8/26/2014 VisionLab 153 Adding a new C++ operator to the client (*) source: Specifies on which image operation is performed, possible values: original: operation is performed on the source image. copy: operation is performed on a copy of the original, the name of the copy is either specified by a imagename parameter (see below: description of paramform) or generated by the system. none: operation is not performed on an image. result: Determines how the result of the operation is to be displayed, possible values: image: The image (= first parameter) on which the operation was performed is displayed. 2ndimage: The image specified as second parameter in the parameter list of the server command is displayed. 3rdimage: The image specified as third parameter in the parameter list of the server command is displayed. 4thimage: The image specified as fourthparameter in the parameter list of the server command is displayed. 2nd3rdimage: The images specified as second and third parameter in the parameter list of the server command are displayed. 8/26/2014 VisionLab 154 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 77
78 Adding a new C++ operator to the client (*) result (continued): 2nd3rd4thimage: The images specified as second, third and fourth parameter in the parameter list of the server command are displayed. bothimages: image and 2ndimage are displayed, see above. box: As result a string with the format '(x1,y1) (x2,y2)' is expected from the server. A box with lefttop (x1,y1) and rightbottom (x2,y2) is drawn in the current active image. circle: As result a string with the format '(x,y) r h' is expected from the server. A circle with centre (x,y) and radius r is drawn in the current active image. h is the number of hits. circles: As result a string with the format 'n (x,y) r h... (x,y) r h' is expected from the server. N circles with centres (x,y) and radius r are drawn in the current active image. line: As result a string with the format '(x1,y1) (x2,y2) is expected from the server. A line from (x1,y1) to (x2,y2) is drawn in the current active image. polarline: As result a string with the format '(r,phi) h' is expected from the server. A line with polarcoordinates is drawn in the current active image. h is the number of hits. 8/26/2014 VisionLab 155 Adding a new C++ operator to the client (*) result (continued): polarlines: As result a string with the format 'n (r,phi) h... (r,phi) h is expected from the server. N lines with polarcoordinates is drawn in the current active image. h is the number of hits. string: As result a string is expected from the server which is displayed in the info bar. stringlist: As result a list of strings is expected from the server which is displayed in a window. nothing: Nothing is displayed. paramform: Specifies the form which to be used to ask the user for the parameters. Currently for user C++ operators only 'varparam' is supported. The section following paramform specifies the parameters for the operator. The maximal number of parameters is 25. The parameters are displayed and sent to the server in the same order as they are declared. 8/26/2014 VisionLab 156 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 78
79 Adding a new C++ operator to the client (*) There are the following possibilities for the parameters : selectedimage <prompt>: An editfield is added with a prompt and the image name of the currently selected image. 2ndselected <prompt>: An editfield is added with a prompt and the image name of the 2ndselected image. 3rdselected <prompt>: An editfield is added with a prompt and the image name of the 3rdselected image. genimagename <prompt>: An editfield is added with a prompt and a generated image name. spinedit <prompt> <default> <low> <high>: A spinedit field is added with a prompt and a default value. Low and high specify the extreme possible values. editbox <prompt> <default>: An editfield is added with a prompt and a default value. combobox <prompt> <default> <item1>... <itemn>: A combo box is added with a prompt and a default value. The combobox is filled with the specified items. 8/26/2014 VisionLab 157 Adding a new C++ operator to the client (*) Possibilities for the parameters (continued): checklistbox <prompt> <defaults> < > <item1>... <itemn>: A checklistbox is added with a prompt and default check values. The listbox is filled with the specified items. NOTE: this parameter can ONLY be used as the last parameter of a command. 8/26/2014 VisionLab 158 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 79
80 Adding a user plugin with new operators (*) Steps Write plugin with new operators Add for each new operator a line to file pluginsjl.ini Add for each operator a description in visionlab.ini (see slide about Adding a new C++ operator to the client See for examples the following files in the SDK: Header file for plugin interface: src\jl_visionlib_plugin.h Example solution for plugin for C++: msvs08\examples\jl_visionlib_plugin Example project plugin for Delphi: msvs08\examples\testdelphi5 8/26/2014 VisionLab 159 JL_VisionLib_plugin.h (*) This header file defines the interface for the PlugIn. It consists of following parts: Enum JL_ImageType for defininig the image types of VisionLab and BytesPerPixelTab table for defining the size of a pixel for each image type Prototypes for the callback functions JL_PlugInInitialize, this function is called to initialize the callback functions when linking the DLL The prototype for the plugin functions inside the DLL Notes: there can be any number of plugin functions in one dll there can be any number of dlls 8/26/2014 VisionLab 160 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 80
81 JL_VisionLib_plugin.h (*) //Image type enumeration enum JL_ImageType {BYTEIMAGE, INT8IMAGE, INT16IMAGE, INT32IMAGE, FLOATIMAGE, DOUBLEIMAGE, RGB888IMAGE, RGB161616IMAGE, HSV888IMAGE, HSV161616IMAGE, YUV888IMAGE, YUV161616IMAGE, COMPLEXFLOATIMAGE, COMPLEXDOUBLEIMAGE }; // table with the bytes per pixel for each image type const int JL_BytesPerPixelTab[] = { sizeof(unsigned char), sizeof(char), sizeof(short int), sizeof(int), sizeof(float), sizeof(double), sizeof(unsigned char) * 4, sizeof(unsigned short int) * 3, sizeof(unsigned char) * 4, sizeof(unsigned short int) * 3, sizeof(unsigned char) * 4, sizeof(unsigned short int) * 3, sizeof(float) * 2, sizeof(double) * 2 }; 8/26/2014 VisionLab 161 JL_VisionLib_plugin.h (*) //Callback to create a new image typedef void * (*JL_CreateImageProc) (const char *imagename, const JL_ImageType type, int height, int width, void *cmdint); //Callback to get image information typedef void * (*JL_GetImageProc) (const char *imagename, JL_ImageType *type, int *height, int *width, void *cmdint); //Callback to create a new string typedef char * (*JL_CreateStringProc) (const int length); // Callback to execute VisionLab command from plugin, plugin must reserve memory with size maxsizeresult for result typedef void (*JL_ExecuteCmdProc) (const char *cmd, char * const result, const int maxsizeresult, void *cmdint); 8/26/2014 VisionLab 162 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 81
82 JL_VisionLib_plugin.h (*) extern "C" declspec(dllexport) //This function is called to initialize the callback functions when linking the DLL void JL_PlugInInitialize (JL_CreateImageProc createimageproc, JL_GetImageProc getimageproc, JL_CreateStringProc createstringproc, JL_ExecuteCmdProc executecmdproc, void *cmdint); /* The prototype for the plugin functions inside the DLL #ifdef WIN32 extern "C" declspec(dllexport) #endif int JL_PlugIn (const int nrparams, const char* const *paramarray, char** result, void *cmdint); function result == 0 means success function result!= 0 means failure, possible extra error information in result notes about string result conventions in VisionLab: - in case of errors string starts with "[<name of command>]", so '[' and ']' can NOT be used in normal string results - "{xxx us} is append for timing information, so '{' and '}' can NOT be used in normal string results */ 8/26/2014 VisionLab 163 Example in C++ for plugin: JL_VisionLib_plugin.cpp (*) This example has the following parts: Implementation of JL_PlugInInitialize JL_Echo_PlugIn example of string handling JL_CmdTest_PlugIn example of calling a VisionLab command from the plugin JL_CopyImage_PlugIn example of making a copy of an image JL_Threshold_PlugIn example of a user threshold implementation 8/26/2014 VisionLab 164 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 82
83 JL_VisionLib_plugin.cpp: Implementation of JL_PlugInInitialize (*) /* Start of code that should always be in the plugin */ static void * globalcmdint; static JL_CreateImageProc createimageproc; static JL_GetImageProc getimageproc; static JL_CreateStringProc createstringproc; static JL_ExecuteCmdProc executecmdproc; // This function is called when linking the DLL void JL_PlugInInitialize (JL_CreateImageProc createimagep, JL_GetImageProc getimagep, JL_CreateStringProc createstringp, JL_ExecuteCmdProc execp, void *cmdint) { createimageproc = createimagep; getimageproc = getimagep; createstringproc = createstringp; executecmdproc = execp; globalcmdint = cmdint; } // JL_PlugInInitialize /* End of code that should always be in the plugin */ 8/26/2014 VisionLab 165 JL_VisionLib_plugin.cpp: JL_Echo_PlugIn (*) // Example of handling strings // - input string is copied to function result. // - $res = Echo_PlugIn // - $res will have the value "12345" extern "C" declspec(dllexport) int JL_Echo_PlugIn (const int nrparams, const char* const *paramarray, char** result, void *cmdint) { if (nrparams == 1) { *result = createstringproc ((unsigned int)strlen(paramarray[0])); strcpy(*result, paramarray[0]); } else { string msg = "[JL_Echo_PlugIn]: Invalid number of parameters"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } // if return 0; // indication succes } // JL_Echo_PlugIn 8/26/2014 VisionLab 166 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 83
84 JL_VisionLib_plugin.cpp: JL_CmdTest_PlugIn (*) // Example of executing VisionLab command // - 1 input parameter // - command to execute: $test_plugin = 'value first input parameter' // - no result is returned extern "C" declspec(dllexport) int JL_CmdTest_PlugIn (const int nrparams, const char* const *paramarray, char** result, void *cmdint) { const int bufsize = 100; char buf[bufsize]; if (nrparams == 1) { *result = createstringproc (bufsize); string cmd = string("$test_plugin = ") + string(paramarray[0]); executecmdproc (cmd.c_str(), buf, bufsize, cmdint); strcpy(*result, buf); } else { string msg = "[JL_CmdTest_PlugIn]: Invalid number of parameters"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } // if return 0; // indication succes } // JL_CmdTest_PlugIn 8/26/2014 VisionLab 167 JL_VisionLib_plugin.cpp: JL_CopyImage_PlugIn 1 (*) // Example of handling image // - image with name in first parameter is copied to image with name // in second parameter // - memory for second image is allocated // - CopyImage_PlugIn <src> <dest> extern "C" declspec(dllexport) int JL_CopyImage_PlugIn (const int nrparams, const char* const *paramarray, char** result, void *cmdint) { if (nrparams == 2) { JL_ImageType type; int height, width; void *srcptr, *destptr; srcptr = getimageproc(paramarray[0], &type, &height, &width, globalcmdint); if (srcptr!= NULL) destptr = createimageproc (paramarray[1], type, height, width, globalcmdint); if (srcptr!= NULL && destptr!= NULL) { memcpy((void *) destptr, (void *) srcptr, height * width * JL_BytesPerPixelTab[type]); 8/26/2014 VisionLab 168 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 84
85 JL_VisionLib_plugin.cpp : JL_CopyImage_PlugIn 2 (*) } else { string msg = "[JL_CopyImage_PlugIn]: Invalid source or destination image"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } } else { string msg = "[JL_CopyImage_PlugIn]: Invalid number of parameters"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } // if return 0; // indication succes } // JL_CopyImage_PlugIn 8/26/2014 VisionLab 169 JL_VisionLib_plugin.cpp : JL_Threshold_PlugIn 1 (*) static void Threshold (const void *imgptr, const int height, const int width, const JL_ImageType type, const double low, const double high) { switch (type) { // // case BYTEIMAGE: { unsigned char *ptr = (unsigned char *) imgptr; for (int i = 0; i < height * width; i++) { if (*ptr > low && *ptr <= high) *ptr++ = 1; else *ptr++ = 0; } // for i break; } case INT16IMAGE: { // // } // switch type } // Threshold 8/26/2014 VisionLab 170 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 85
86 JL_VisionLib_plugin.cpp : JL_Threshold_PlugIn 2 (*) // Example of inplace image operation // - image with name in first parameter is thresholded with 2nd // parameter as low and 3rd as high // - Threshold_PlugIn <image> <low> <high> extern "C" declspec(dllexport) int JL_Threshold_PlugIn (const int nrparams, const char* const *paramarray, char** result, void *cmdint) { if (nrparams == 3) { int height, width; JL_ImageType type; void *imgptr; imgptr = getimageproc(paramarray[0], &type, &height, &width, globalcmdint); if (imgptr!= NULL) { double low = atof(paramarray[1]); double high = atof(paramarray[2]); Threshold(imgPtr, height, width, type, low, high); 8/26/2014 VisionLab 171 JL_VisionLib_plugin.cpp : JL_Threshold_PlugIn 3 (*) } else { string msg = "[JL_ThresholdPlugIn]: Invalid source or destination image"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } } else { string msg = "[JL_ThresholdPlugIn]: Invalid number of parameters"; *result = createstringproc ((unsigned int) msg.size()); strcpy(*result, msg.c_str()); return -1; // indicating failure } // if return 0; // indication succes } // JL_ThresholdPlugIn 8/26/2014 VisionLab 172 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 86
87 pluginsjl.ini (*) The file pluginsjl.ini bind command names to entry points in dlls. This file should be in the same directory as vissvr.exe Each line has the following syntax: <cmdname> <dllname> <entryname> <help info> // <space> <comment> example: Echo_PlugIn JL_VisionLib_plugin.dll JL_Echo_PlugIn <string_to_echo> CmdTest_PlugIn JL_VisionLib_plugin.dll JL_CmdTest_PlugIn <param_for_assignment> CopyImage_PlugIn JL_VisionLib_plugin.dll JL_CopyImage_PlugIn <srcimage> <destimage> // comment Threshold_PlugIn JL_VisionLib_plugin.dll JL_Threshold_PlugIn <imagename> <low> <high> 8/26/2014 VisionLab 173 Add for each pugin operator a description in visionlab.ini 1 (*) [echo_plugin] menu=user1menu caption=&echo_plugin class=noimage help=0 shortcut=none command=echo_plugin source=none result=string paramform=varparam editbox string [cmdtest_plugin] menu=user1menu caption=&cmdtest_plugin class=noimage help=0 shortcut=none command=cmdtest_plugin source=none result=string paramform=varparam editbox value /26/2014 VisionLab 174 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 87
88 Add for each pugin operator a description in visionlab.ini 2 (*) [copyimage_plugin] menu=user1menu caption=©image_plugin class=numimage help=0 shortcut=none command=copyimage_plugin source=original result=2ndimage paramform=varparam selectedimage source genimagename destination [threshold_plugin] menu=user1menu caption=&threshold_plugin class=ordimage help=0 shortcut=none command=threshold_plugin source=copy result=image paramform=varparam selectedimage source editbox low 160 editbox high 255 8/26/2014 VisionLab 175 Using VisionLab command interpreter in #C (*) Overview: JL_VisionLib_DLL.dll: wrapper around VisionLab command interpreter JL_VisionLibCmdInt.cs:.Net wrapper around JL_VisionLib_DLL Test_CS: example program in C# Notes: - all files can be found in the visual studio solution examples.sln - In order to find the license file in the /windows/system32 directory: set in the project property security: - the "Enable ClickOnce Security Settings" to enabled - set "This is a full trust application" 8/26/2014 VisionLab 176 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 88
89 Using VisionLab command interpreter in #C (*) Test_CS (C#) JL_VisionLibCmdInt (C#) JL_VisionLib_DLL.dll (C) VisionLab Cmd Intepreter (C++) VisionLab Lib (C++) 8/26/2014 VisionLab 177 JL_VisionLib_DLL.h (*) /* This module is a dll wrapper around the VisionLib command interpreter. * It's function is to make the command interpreter accessable from non Visual * studio c++ languages. * The 4 main functions can be called using the windows standard calling conventions. * The result of executing a command or an error message from the Get/Set function * will returned in a buffer (answer) provided by the user. The user should allocated * enough memory. The size of this buffer is specified in parameter maxsizeanswer. * If this buffer is not big enough the answer will be truncated. * For most functions a buffer size of 1024 bytes will be sufficient, but special commands like blobanalyse * can require more space. If the buffer is to small an error message will be stored in the answer. * JL_Execute and JL_SetImage will return the size of answer and/or error text. * JL_GetImage will return a handle to a bitmap or a 0 with an error message in answer if the * operation failed. * GetImage will produce a handle to a bitmap in Format32bppRgb. * SetImage will only accept a handle to a bitmap in Format32bppRgb. * GetBufPtr will return a pointer to the internal pixel array or a 0 with an error message in answer if the * operation failed. Note the buffer is still owned by the image and the buffer should not be deleted by * using the returned pointer. */ extern "C" declspec(dllexport) int JL_Execute (const char *cmd, char * const answer, const int maxsizeanswer); extern "C" declspec(dllexport) HBITMAP JL_GetImage (const char *imagename, char* const answer, const int maxsizeanswer); extern "C" declspec(dllexport) int JL_SetImage (const char *imagename, const char * JLImagetype, HBITMAP image, char* const answer, const int maxsizeanswer); extern "C" declspec(dllexport) void* JL_GetBufPtr (const char *imagename, char* const answer, const int maxsizeanswer); 8/26/2014 VisionLab 178 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 89
90 JL_VisionLib_DLL.cpp (*) You need to adapt the source if you want to use an another camera interface /* How to add camera support to this component: * DXCam: * - add "RegisterDXCam(*cmdInt);" to DllMain * - add dxcam.lib from the ReleaseLib directory to this project * - build the project * Firewire FirePack: * - add "RegisterFirePackCam(*cmdInt);" to main * - add firepack.lib from the ReleaseLib directory to this project * - build the project * Gen<I>Cam with GenTL: * - add "RegisterJL_GenICam(*cmdInt);" to main * - add genicam.lib from the ReleaseLib directory to this project * - build the project */ 8/26/2014 VisionLab 179 JL_VisionLib_DLL.cpp (*). BOOL APIENTRY DllMain (HANDLE /*hmodule*/, DWORD fdwreason, LPVOID /*lpreserved*/) { switch (fdwreason) { case DLL_PROCESS_ATTACH: cmdint = new VisLibCmdInt(DefaultCallBackCmd(DefCallBackProc), maxhissize, EchoOff); // > add here your extensions to the VisionLib command interperter //RegisterDXCam(*cmdInt); RegisterJL_GenICam(*cmdInt); //RegisterFirePackCam(*cmdInt); InsertUserOperCmds(*cmdInt); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: if (cmdint!= 0) delete cmdint; break; } return TRUE; // Successful DLL_PROCESS_ATTACH. } // DllMain.. 8/26/2014 VisionLab 180 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 90
91 JL_VisionLibCmdInt.cs (*) C# interface to VisionLab command intepreter public class CmdInt { } protected const string dllname public static string Init() public static string Execute(string cmd) public static Bitmap GetImage(string imagename) public static void SetImage(string imagename, string imagetype, Bitmap bmp) Notes: dllname must point to the correct location of JL_VisionLib_DLL.dll Init must be call this as soon as possible to avoid late loading of dll If you change the current working directory before calling Init it is possible that the license file can not be found 8/26/2014 VisionLab 181 TestCS.prj (*) Test application in C# Functions: Test of one command Display VisionLab image in C# PictureBox Open an image in C# (*.bmp, jpg, etc), convert it to VisionLab format Install camera and make snapshots Note: you will have to customize the action under the Install button according to the camera used Stress test for testing on memory leaks Note: C# is using a garbage collector. But if you do not free memory yourself, the garbage collector will select a moment to do it itself and may freeze your application for some time 8/26/2014 VisionLab 182 Jaap van de Loosdrecht, NHL, vdlmv, [email protected] 91
92 Screen shot of TestCS application (*) 8/26/2014 VisionLab 183 Jaap van de Loosdrecht, NHL, vdlmv, 92
Computer Vision. VisionLab development environment. 1 July 2009
Noordelijke Hogeschool Leeuwarden Computer Vision VisionLab development environment 1 July 2009 Copyright 2001 2009 by Noordelijke Hogeschool Leeuwarden and Van de Loosdrecht Machine Vision BV All rights
Computer Vision. License Plate Recognition Klaas Dijkstra - Jaap van de Loosdrecht
Computer Vision License Plate Recognition Klaas Dijkstra - Jaap van de Loosdrecht 25 August 2014 Copyright 2001 2014 by NHL University of Applied Sciences and Van de Loosdrecht Machine Vision BV All rights
Computer Vision. Image math. Copyright 2001 2016 by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved
Computer Vision: Image math and geometric Computer Vision Image math Copyright 2001 2016 by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved [email protected], [email protected]
Computer Vision. Color image processing. 25 August 2014
Computer Vision Color image processing 25 August 2014 Copyright 2001 2014 by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved [email protected], [email protected] Color image
Visual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
Creating Database Tables in Microsoft SQL Server
Creating Database Tables in Microsoft SQL Server Microsoft SQL Server is a relational database server that stores and retrieves data for multi-user network-based applications. SQL Server databases are
Setting Up ALERE with Client/Server Data
Setting Up ALERE with Client/Server Data TIW Technology, Inc. November 2014 ALERE is a registered trademark of TIW Technology, Inc. The following are registered trademarks or trademarks: FoxPro, SQL Server,
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
The Helios Microsoft Windows Server
The Helios Microsoft Windows Server COPYRIGHT This document Copyright 1992 Distributed Software Limited. All rights reserved. This document may not, in whole or in part, be copied, photocopied, reproduced,
Portal Connector Fields and Widgets Technical Documentation
Portal Connector Fields and Widgets Technical Documentation 1 Form Fields 1.1 Content 1.1.1 CRM Form Configuration The CRM Form Configuration manages all the fields on the form and defines how the fields
VX Search File Search Solution. VX Search FILE SEARCH SOLUTION. User Manual. Version 8.2. Jan 2016. www.vxsearch.com [email protected]. Flexense Ltd.
VX Search FILE SEARCH SOLUTION User Manual Version 8.2 Jan 2016 www.vxsearch.com [email protected] 1 1 Product Overview...4 2 VX Search Product Versions...8 3 Using Desktop Product Versions...9 3.1 Product
UniFinger Engine SDK Manual (sample) Version 3.0.0
UniFinger Engine SDK Manual (sample) Version 3.0.0 Copyright (C) 2007 Suprema Inc. Table of Contents Table of Contents... 1 Chapter 1. Introduction... 2 Modules... 3 Products... 3 Licensing... 3 Supported
ODBC Driver Version 4 Manual
ODBC Driver Version 4 Manual Revision Date 12/05/2007 HanDBase is a Registered Trademark of DDH Software, Inc. All information contained in this manual and all software applications mentioned in this manual
INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3
INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3 Often the most compelling way to introduce yourself to a software product is to try deliver value as soon as possible. Simego DS3 is designed to get you
Citrix EdgeSight for Load Testing User s Guide. Citrx EdgeSight for Load Testing 2.7
Citrix EdgeSight for Load Testing User s Guide Citrx EdgeSight for Load Testing 2.7 Copyright Use of the product documented in this guide is subject to your prior acceptance of the End User License Agreement.
ODBC Client Driver Help. 2015 Kepware, Inc.
2015 Kepware, Inc. 2 Table of Contents Table of Contents 2 4 Overview 4 External Dependencies 4 Driver Setup 5 Data Source Settings 5 Data Source Setup 6 Data Source Access Methods 13 Fixed Table 14 Table
DataPA OpenAnalytics End User Training
DataPA OpenAnalytics End User Training DataPA End User Training Lesson 1 Course Overview DataPA Chapter 1 Course Overview Introduction This course covers the skills required to use DataPA OpenAnalytics
Installation Guidelines (MySQL database & Archivists Toolkit client)
Installation Guidelines (MySQL database & Archivists Toolkit client) Understanding the Toolkit Architecture The Archivists Toolkit requires both a client and database to function. The client is installed
ivms-4200 Client Software Quick Start Guide
ivms-4200 Client Software Quick Start Guide Notices The information in this documentation is subject to change without notice and does not represent any commitment on behalf of HIKVISION. HIKVISION disclaims
email-lead Grabber Business 2010 User Guide
email-lead Grabber Business 2010 User Guide Copyright and Trademark Information in this documentation is subject to change without notice. The software described in this manual is furnished under a license
C-more Remote Access, Data Log, FTP File Transfer, and Email Tutorial
C-more Remote Access, Data Log, FTP File Transfer, and Email Tutorial P a g e 2 Introduction: This script will walk you through the basic process of setting up the remote access, data logging, FTP file
Bank Reconciliation User s Guide
Bank Reconciliation User s Guide Version 7.5 2210.BR75 2008 Open Systems Holdings Corp. All rights reserved. Document Number 2210.BR75 No part of this manual may be reproduced by any means without the
Design document Goal Technology Description
Design document Goal OpenOrienteering Mapper is a program to draw orienteering maps. It helps both in the surveying and the following final drawing task. Support for course setting is not a priority because
DinoXcope User Manual
DinoXcope User Manual Contents 1 System Requirements 1 Installation 2 Adding a time stamp to the live view 3 Capturing an image 4 Creating a real time movie 5 Creating a time-lapse movie 6 Drawing on an
Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick Reference Guide
Open Crystal Reports From the Windows Start menu choose Programs and then Crystal Reports. Creating a Blank Report Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick
Citrix EdgeSight for Load Testing User s Guide. Citrix EdgeSight for Load Testing 3.8
Citrix EdgeSight for Load Testing User s Guide Citrix EdgeSight for Load Testing 3.8 Copyright Use of the product documented in this guide is subject to your prior acceptance of the End User License Agreement.
Installation and Operating Instructions for the FluidX IntelliCode software Rev 1, release date: July 2014
Installation and Operating Instructions for the FluidX IntelliCode software Rev 1, release date: July 2014 FluidX Ltd. Monks Heath Hall, Chelford Road, Nether Alderley, Cheshire, SK10 4SY, UK. T: +44(0)
Legal Notes. Regarding Trademarks. 2012 KYOCERA Document Solutions Inc.
Legal Notes Unauthorized reproduction of all or part of this guide is prohibited. The information in this guide is subject to change without notice. We cannot be held liable for any problems arising from
Data Tool Platform SQL Development Tools
Data Tool Platform SQL Development Tools ekapner Contents Setting SQL Development Preferences...5 Execution Plan View Options Preferences...5 General Preferences...5 Label Decorations Preferences...6
MS Access Lab 2. Topic: Tables
MS Access Lab 2 Topic: Tables Summary Introduction: Tables, Start to build a new database Creating Tables: Datasheet View, Design View Working with Data: Sorting, Filtering Help on Tables Introduction
VistaPoint Companion is a client program used within the VistaPoint Enterprise system. VistaPoint Companion is available in two versions:
VistaPoint Companion Users Guide file:///c:/users/tdavis/appdata/local/temp/~hh2a10.htm Page 1 of 3 10/22/2012 VistaPoint Companion Users Guide For VistaPoint Console Companion and VistaPoint Desktop Companion
Virtual Integrated Design Getting started with RS232 Hex Com Tool v6.0
Virtual Integrated Design Getting started with RS232 Hex Com Tool v6.0 Copyright, 1999-2007 Virtual Integrated Design, All rights reserved. 1 Contents: 1. The Main Window. 2. The Port Setup Window. 3.
Microsoft Access 3: Understanding and Creating Queries
Microsoft Access 3: Understanding and Creating Queries In Access Level 2, we learned how to perform basic data retrievals by using Search & Replace functions and Sort & Filter functions. For more complex
Video Tracking Software User s Manual. Version 1.0
Video Tracking Software User s Manual Version 1.0 Triangle BioSystems International 2224 Page Rd. Suite 108 Durham, NC 27703 Phone: (919) 361-2663 Fax: (919) 544-3061 www.trianglebiosystems.com Table of
Model 288B Charge Plate Graphing Software Operators Guide
Monroe Electronics, Inc. Model 288B Charge Plate Graphing Software Operators Guide P/N 0340175 288BGraph (80207) Software V2.01 100 Housel Ave PO Box 535 Lyndonville NY 14098 1-800-821-6001 585-765-2254
13-1. This chapter explains how to use different objects.
13-1 13.Objects This chapter explains how to use different objects. 13.1. Bit Lamp... 13-3 13.2. Word Lamp... 13-5 13.3. Set Bit... 13-9 13.4. Set Word... 13-11 13.5. Function Key... 13-18 13.6. Toggle
There are numerous ways to access monitors:
Remote Monitors REMOTE MONITORS... 1 Overview... 1 Accessing Monitors... 1 Creating Monitors... 2 Monitor Wizard Options... 11 Editing the Monitor Configuration... 14 Status... 15 Location... 17 Alerting...
Personal Call Manager User Guide. BCM Business Communications Manager
Personal Call Manager User Guide BCM Business Communications Manager Document Status: Standard Document Version: 04.01 Document Number: NN40010-104 Date: August 2008 Copyright Nortel Networks 2005 2008
Computer Vision. Image acquisition. 25 August 2014. Copyright 2001 2014 by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved
Computer Vision Image acquisition 25 August 2014 Copyright 2001 2014 by NHL Hogeschool and Van de Loosdrecht Machine Vision BV All rights reserved [email protected], [email protected] Image acquisition
Building a Python Plugin
Building a Python Plugin QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi This work is licensed under a Creative Commons Attribution 4.0 International License. Building a Python
ACCESS 2007. Importing and Exporting Data Files. Information Technology. MS Access 2007 Users Guide. IT Training & Development (818) 677-1700
Information Technology MS Access 2007 Users Guide ACCESS 2007 Importing and Exporting Data Files IT Training & Development (818) 677-1700 [email protected] TABLE OF CONTENTS Introduction... 1 Import Excel
Using Nios II Floating-Point Custom Instructions Tutorial
Using Nios II Floating-Point Custom Instructions Tutorial 101 Innovation Drive San Jose, CA 95134 www.altera.com TU-N2FLTNGPNT-2.0 Copyright 2010 Altera Corporation. All rights reserved. Altera, The Programmable
StrikeRisk v6.0 IEC/EN 62305-2 Risk Management Software Getting Started
StrikeRisk v6.0 IEC/EN 62305-2 Risk Management Software Getting Started Contents StrikeRisk v6.0 Introduction 1/1 1 Installing StrikeRisk System requirements Installing StrikeRisk Installation troubleshooting
5nine Hyper-V Commander
5nine Hyper-V Commander 5nine Hyper-V Commander provides a local graphical user interface (GUI), and a Framework to manage Hyper-V R2 server and various functions such as Backup/DR, HA and P2V/V2V. It
vtcommander Installing and Starting vtcommander
vtcommander vtcommander provides a local graphical user interface (GUI) to manage Hyper-V R2 server. It supports Hyper-V technology on full and core installations of Windows Server 2008 R2 as well as on
User Manual Gigabit Ethernet Vision Quick Start Guide
User Manual Gigabit Ethernet Vision Quick Start Guide MAN051 11/2011 V10 All information provided in this manual is believed to be accurate and reliable No responsibility is assumed by Photonfocus AG
13 Managing Devices. Your computer is an assembly of many components from different manufacturers. LESSON OBJECTIVES
LESSON 13 Managing Devices OBJECTIVES After completing this lesson, you will be able to: 1. Open System Properties. 2. Use Device Manager. 3. Understand hardware profiles. 4. Set performance options. Estimated
MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC
MyOra 3.0 SQL Tool for Oracle User Guide Jayam Systems, LLC Contents Features... 4 Connecting to the Database... 5 Login... 5 Login History... 6 Connection Indicator... 6 Closing the Connection... 7 SQL
Cart Interface Installation & Control Board Manual for M38 XP and RX Carts and Legacy M39 Carts
Rubbermaid Medical Solutions Cart Interface Installation & Control Board Manual for M38 XP and RX Carts and Legacy M39 Carts REVISED FEBRUARY 25, 2010 Filename: Cart Interface Installation & Control Board
CLOUD DIGITISER 2014!
CLOUD DIGITISER 2014 Interactive measurements of point cloud sequences July 2014 Cloud Digitiser Manual 1 CLOUD DIGITISER Interactive measurement of point clouds Bill Sellers July 2014 Introduction Photogrammetric
National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide
National Fire Incident Reporting System (NFIRS 5.0) NFIRS Data Entry/Validation Tool Users Guide NFIRS 5.0 Software Version 5.3 Prepared for: Directorate of Preparedness and Response (FEMA) Prepared by:
PTC Integrity Eclipse and IBM Rational Development Platform Guide
PTC Integrity Eclipse and IBM Rational Development Platform Guide The PTC Integrity integration with Eclipse Platform and the IBM Rational Software Development Platform series allows you to access Integrity
Virtual CD v10. Network Management Server Manual. H+H Software GmbH
Virtual CD v10 Network Management Server Manual H+H Software GmbH Table of Contents Table of Contents Introduction 1 Legal Notices... 2 What Virtual CD NMS can do for you... 3 New Features in Virtual
Network Probe User Guide
Network Probe User Guide Network Probe User Guide Table of Contents 1. Introduction...1 2. Installation...2 Windows installation...2 Linux installation...3 Mac installation...4 License key...5 Deployment...5
Data-Tracker PLUS and Data-Viewer PLUS Software User s Guide
Data-Tracker PLUS and Data-Viewer PLUS Software User s Guide Version 1.1 Data-Tracker PLUS and Data-Viewer PLUS User s Guide Overview Data-Tracker PLUS is a software program designed and developed to interface
Affdex SDK for Windows!
Affdex SDK for Windows SDK Developer Guide 1 Introduction Affdex SDK is the culmination of years of scientific research into emotion detection, validated across thousands of tests worldwide on PC platforms,
SMTP-32 Library. Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows. Version 5.2
SMTP-32 Library Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows Version 5.2 Copyright 1994-2003 by Distinct Corporation All rights reserved Table of Contents 1 Overview... 5 1.1
OPERATING INSTRUCTIONS Nikon TiE Deconvolution Microscope CCRB 1-220G
OPERATING INSTRUCTIONS Nikon TiE Deconvolution Microscope CCRB 1-220G Conventions Through these notes bold font refers to a software button and italics refer to a hardware switch. The software makes extensive
Viewing and Troubleshooting Perfmon Logs
CHAPTER 7 To view perfmon logs, you can download the logs or view them locally. This chapter contains information on the following topics: Viewing Perfmon Log Files, page 7-1 Working with Troubleshooting
MS Active Sync: Sync with External Memory Files
Mindfire Solutions - 1 - MS Active Sync: Sync with External Memory Files Author: Rahul Gaur Mindfire Solutions, Mindfire Solutions - 2 - Table of Contents Overview 3 Target Audience 3 Conventions...3 1.
WS_FTP Professional 12
WS_FTP Professional 12 Tools Guide Contents CHAPTER 1 Introduction Ways to Automate Regular File Transfers...5 Check Transfer Status and Logs...6 Building a List of Files for Transfer...6 Transfer Files
Getting Started with Telerik Data Access. Contents
Contents Overview... 3 Product Installation... 3 Building a Domain Model... 5 Database-First (Reverse) Mapping... 5 Creating the Project... 6 Creating Entities From the Database Schema... 7 Model-First
USER GUIDE MANTRA WEB EXTRACTOR. www.altiliagroup.com
USER GUIDE MANTRA WEB EXTRACTOR www.altiliagroup.com Page 1 of 57 MANTRA WEB EXTRACTOR USER GUIDE TABLE OF CONTENTS CONVENTIONS... 2 CHAPTER 2 BASICS... 6 CHAPTER 3 - WORKSPACE... 7 Menu bar 7 Toolbar
Microsoft Access 2010 Part 1: Introduction to Access
CALIFORNIA STATE UNIVERSITY, LOS ANGELES INFORMATION TECHNOLOGY SERVICES Microsoft Access 2010 Part 1: Introduction to Access Fall 2014, Version 1.2 Table of Contents Introduction...3 Starting Access...3
Using Microsoft SQL Server A Brief Help Sheet for CMPT 354
Using Microsoft SQL Server A Brief Help Sheet for CMPT 354 1. Getting Started To Logon to Windows NT: (1) Press Ctrl+Alt+Delete. (2) Input your user id (the same as your Campus Network user id) and password
Applying a circular load. Immediate and consolidation settlement. Deformed contours. Query points and query lines. Graph query.
Quick Start Tutorial 1-1 Quick Start Tutorial This quick start tutorial will cover some of the basic features of Settle3D. A circular load is applied to a single soil layer and settlements are examined.
MetroPro Remote Access OMP-0476F. Zygo Corporation Laurel Brook Road P.O. Box 448 Middlefield, Connecticut 06455
MetroPro Remote Access OMP-0476F Zygo Corporation Laurel Brook Road P.O. Box 448 Middlefield, Connecticut 06455 Telephone: (860) 347-8506 E-mail: [email protected] Website: www.zygo.com ZYGO CUSTOMER SUPPORT
Out n About! for Outlook Electronic In/Out Status Board. Administrators Guide. Version 3.x
Out n About! for Outlook Electronic In/Out Status Board Administrators Guide Version 3.x Contents Introduction... 1 Welcome... 1 Administration... 1 System Design... 1 Installation... 3 System Requirements...
User Tutorial on Changing Frame Size, Window Size, and Screen Resolution for The Original Version of The Cancer-Rates.Info/NJ Application
User Tutorial on Changing Frame Size, Window Size, and Screen Resolution for The Original Version of The Cancer-Rates.Info/NJ Application Introduction The original version of Cancer-Rates.Info/NJ, like
WA2262 Applied Data Science and Big Data Analytics Boot Camp for Business Analysts. Classroom Setup Guide. Web Age Solutions Inc.
WA2262 Applied Data Science and Big Data Analytics Boot Camp for Business Analysts Classroom Setup Guide Web Age Solutions Inc. Copyright Web Age Solutions Inc. 1 Table of Contents Part 1 - Minimum Software
Moxa Device Manager 2.0 User s Guide
First Edition, March 2009 www.moxa.com/product 2009 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. Moxa Device Manager 2.0 User Guide The software described in this manual
KViewCenter Software User Manual 2012 / 04 / 20 Version 2.2.1.0
KViewCenter Software User Manual 2012 / 04 / 20 Version 2.2.1.0 Table of Contents Chapter 1. KViewCenter Interface... 5 1.1. Log in.... 5 1.2. Log out... 5 1.3. Control Panel... 6 1.4. Control Panel (Preview
Getting Started with Vision 6
Getting Started with Vision 6 Version 6.9 Notice Copyright 1981-2009 Netop Business Solutions A/S. All Rights Reserved. Portions used under license from third parties. Please send any comments to: Netop
Gigabyte Management Console User s Guide (For ASPEED AST 2400 Chipset)
Gigabyte Management Console User s Guide (For ASPEED AST 2400 Chipset) Version: 1.4 Table of Contents Using Your Gigabyte Management Console... 3 Gigabyte Management Console Key Features and Functions...
AXIS Camera Station Quick Installation Guide
AXIS Camera Station Quick Installation Guide Copyright Axis Communications AB April 2005 Rev. 3.5 Part Number 23997 1 Table of Contents Regulatory Information.................................. 3 AXIS Camera
GelAnalyzer 2010 User s manual. Contents
GelAnalyzer 2010 User s manual Contents 1. Starting GelAnalyzer... 2 2. The main window... 2 3. Create a new analysis... 2 4. The image window... 3 5. Lanes... 3 5.1 Detect lanes automatically... 3 5.2
Avalanche Remote Control User Guide. Version 4.1.3
Avalanche Remote Control User Guide Version 4.1.3 ii Copyright 2012 by Wavelink Corporation. All rights reserved. Wavelink Corporation 10808 South River Front Parkway, Suite 200 South Jordan, Utah 84095
Call Center - Agent Application User Manual
Forum 700 Call Center Agent Application User Manual Legal notice: Belgacom and the Belgacom logo are trademarks of Belgacom. All other trademarks are the property of their respective owners. The information
Rapid Assessment Key User Manual
Rapid Assessment Key User Manual Table of Contents Getting Started with the Rapid Assessment Key... 1 Welcome to the Print Audit Rapid Assessment Key...1 System Requirements...1 Network Requirements...1
Quick Start Tutorial. Using the TASKING* Software Development Tools with the Intel 8x930 Family Evaluation Board
Quick Start Tutorial Using the TASKING* Software Development Tools with the Intel 8x930 Family Evaluation Board This explains how to use the TASKING Microsoft* Windows*-based software development tools
AdminToys Suite. Installation & Setup Guide
AdminToys Suite Installation & Setup Guide Copyright 2008-2009 Lovelysoft. All Rights Reserved. Information in this document is subject to change without prior notice. Certain names of program products
EMC Documentum Webtop
EMC Documentum Webtop Version 6.5 User Guide P/N 300 007 239 A01 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 1994 2008 EMC Corporation. All rights
Auditing manual. Archive Manager. Publication Date: November, 2015
Archive Manager Publication Date: November, 2015 All Rights Reserved. This software is protected by copyright law and international treaties. Unauthorized reproduction or distribution of this software,
GE Fanuc Automation CIMPLICITY
GE Fanuc Automation CIMPLICITY Monitoring and Control Products CIMPLICITY HMI Plant Edition Basic Control Engine Event Editor and BCEUI Operation Manual GFK-1282F July 2001 Following is a list of documentation
Mobius Manual (3.55)
Mobius Manual (3.55) Page 1 Datalink Systems, Inc. TECHNICAL DOCUMENTATION Mobius Manual (3.55) (Last updated: Monday, 16 April 2007) Mobius Manual (3.55) Page 2 Contents 1.0 Mobius Overview...3 2.0 Installation...4
User Guide Win7Zilla
User Guide Win7Zilla Table of contents Section 1: Installation... 3 1.1 System Requirements... 3 1.2 Software Installation... 3 1.3 Uninstalling Win7Zilla software... 3 Section 2: Navigation... 4 2.1 Main
TFA. KlimaLogg Pro. User Manual. Revision: 0.1
TFA KlimaLogg Pro User Manual Revision: 0.1 Table of Contents Overview... 2 Getting Started... 2 Setting up the KlimaLogg Pro device... 2 Installing the USB-Stick... 2 Installation... 2 System Requirements...
Expedite for Windows Software Development Kit Programming Guide
GXS EDI Services Expedite for Windows Software Development Kit Programming Guide Version 6 Release 2 GC34-3285-02 Fifth Edition (November 2005) This edition replaces the Version 6.1 edition. Copyright
WA Manager Alarming System Management Software Windows 98, NT, XP, 2000 User Guide
WA Manager Alarming System Management Software Windows 98, NT, XP, 2000 User Guide Version 2.1, 4/2010 Disclaimer While every effort has been made to ensure that the information in this guide is accurate
UX Mail Fax Features. Empowered by Innovation. P/N 0913251 Rev 1, September 15, 2008 Printed in U.S.A. V4.21
Empowered by Innovation UX Mail Fax Features P/N 0913251 Rev 1, September 15, 2008 Printed in U.S.A. V4.21 For additional resources, visit UX5000 on the web at http://www.necux5000.com. This manual has
Chapter 4 Accessing Data
Chapter 4: Accessing Data 73 Chapter 4 Accessing Data The entire purpose of reporting is to make sense of data. Therefore, it is important to know how to access data locked away in the database. In this
Microsoft Dynamics GP. Extender User s Guide
Microsoft Dynamics GP Extender User s Guide Copyright Copyright 2010 Microsoft. All rights reserved. Limitation of liability This document is provided as-is. Information and views expressed in this document,
BillQuick Agent 2010 Getting Started Guide
Time Billing and Project Management Software Built With Your Industry Knowledge BillQuick Agent 2010 Getting Started Guide BQE Software, Inc. 2601 Airport Drive Suite 380 Torrance CA 90505 Support: (310)
ROBOTRACKER A SYSTEM FOR TRACKING MULTIPLE ROBOTS IN REAL TIME. by Alex Sirota, [email protected]
ROBOTRACKER A SYSTEM FOR TRACKING MULTIPLE ROBOTS IN REAL TIME by Alex Sirota, [email protected] Project in intelligent systems Computer Science Department Technion Israel Institute of Technology Under the
User Management Resource Administrator. UMRA Example Projects. Service Management
User Management Resource Administrator UMRA Example Projects UMRA example projects Copyright 2005, Tools4Ever B.V. All rights reserved. No part of the contents of this user guide may be reproduced or transmitted
Access Central 4.2 Tenant Billing
Access Central 4.2 Tenant Billing Software Package Access Central/Tenant Billing is comprised of four executable programs which all must reside in the subdirectory named: c:\tc85dir 1. ACCESS CENTRAL.MDB
How To Use Standard Pos On A Pc Or Macbook Powerbook 2.5.2.2 (Powerbook 2)
Integrated Point of Sales System for Mac OS X Program version: 6.3.22 110401 2012 HansaWorld Ireland Limited, Dublin, Ireland Preface Standard POS is a powerful point of sales system for small shops and
Empowered by Innovation. Setting Up and Using Fax Mail. P/N 1770087 July 2006 Printed in U.S.A.
Empowered by Innovation Setting Up and Using Fax Mail P/N 1770087 July 2006 Printed in U.S.A. This manual has been developed by NEC Unified Solutions, Inc. It is intended for the use of its customers and
Version of this tutorial: 1.06a (this tutorial will going to evolve with versions of NWNX4)
Version of this tutorial: 1.06a (this tutorial will going to evolve with versions of NWNX4) The purpose of this document is to help a beginner to install all the elements necessary to use NWNX4. Throughout
