# Sample Programs

## [Image processing](image_processing/index.html.md)

| Sample                                                              | The sample program demonstrates how to:                                                                                                      | Image                                                                       | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|---------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [Basic](image_processing/basic.html.md)                | - Display an image.<br/>- Display and graphically interact with an ROI.                                                                      | ![](assets/images/sample_programs/image_processing-basic.webp)              | ✓     | ✓    | ✓    |         | ✓    |          |
| [BasicWPF](image_processing/basicwpf.html.md)             | - Display an image in a WPF context.<br/>- Display and graphically interact with an ROI.                                                     | ![](assets/images/sample_programs/image_processing-basic.webp)              | ✓     |      |      |         |      |          |
| [ConsoleBasic](image_processing/consolebasic.html.md)         | - Initialize and release the eVision library.<br/>- Check for a specific license.<br/>- Load an image and perform a simple processing on it. | —                                                                           | ✓     | ✓    |      | ✓       |      |          |
| [Region](image_processing/region.html.md)               | - Create an ERegion and use it to restrict eVision processing to its domain.                                                                 | ![](assets/images/sample_programs/image_processing-region.webp)             | ✓     | ✓    | ✓    |         |      |          |
| [RegionFreeHand](image_processing/regionfreehand.html.md)       | - Create an ERegion using the ERegionFreeHandPainter.                                                                                        | ![](assets/images/sample_programs/image_processing-regionfreehand.webp)     | ✓     | ✓    |      |         |      |          |
| [EasyImageFilter](image_processing/easyimagefilter.html.md)      | - Apply filter operations on a loaded image.                                                                                                 | ![](assets/images/sample_programs/image_processing-easyimagefilter.webp)    | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [FourierFiltering](image_processing/fourierfiltering.html.md)     | - Compute the direct Fourier transform.<br/>- Compute the inverse Fourier transform.                                                         | ![](assets/images/sample_programs/image_processing-fourierfiltering.webp)   | ✓     | ✓    | ✓    |         |      |          |
| [EasyColorComponent](image_processing/easycolorcomponent.html.md)   | - Retrieve one component of a color image after converting it from RGB to a given color space.                                               | ![](assets/images/sample_programs/image_processing-easycolorcomponent.webp) | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyHDRFusion](image_processing/easyhdrfusion.html.md)        | - Perform an HDR Fusion on a specific set of images.                                                                                         | ![](assets/images/sample_programs/image_processing-hdrfusion.webp)          | ✓     | ✓    |      |         |      |          |
| [EGrabberBridge](image_processing/egrabberbridge.html.md)       | - Use the EGrabberBridge functionality to import and use images produced by an object eGrabber with eVision.                                 | ![](assets/images/sample_programs/image_processing-egrabberbridge.webp)     | ✓     | ✓    |      |         |      |          |
| [SharedLibraryConsole](image_processing/sharedlibrary.html.md) | - Use eVision in a C++ DLL.                                                                                                                  | —                                                                           |       |      |      | ✓       |      |          |

## [3D Processing](3d_processing/index.html.md)

| Sample                                                                     | The sample program demonstrates:                                                                                                 | Image                                                                             | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|----------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [Easy3DViewer](3d_processing/easy3dviewer.html.md)                | - Use most of the features of the Easy3D class E3DViewer.<br/>- Convert 3D files formats.<br/>- Use a point picking.             | ![](assets/images/sample_programs/3d_processing_easy3dviewer.webp)                | ✓     | ✓    | ✓    |         |      |          |
| [Easy3DViewerWPF](3d_processing/easy3dviewerwpf.html.md)             | - Display an E3DViewer in a WPF context.                                                                                         | ![](assets/images/sample_programs/3d_processing_easy3dviewerwpf.webp)             | ✓     |      |      |         |      |          |
| [Easy3DPhotometricStereo](3d_processing/easy3dphotometricstereo.html.md)     | - Apply photometric stereo to several images to retrieve their albedo, gradients, curvatures or height map.                      | ![](assets/images/sample_programs/3d_processing_easy3dphotometricstereo.webp)     | ✓     | ✓    |      |         |      |          |
| [Easy3DPointCloudToMesh](3d_processing/easy3dpointcloudtomesh.html.md)      | - Generate a mesh from a point cloud.                                                                                            | ![](assets/images/sample_programs/3d_processing_easy3dpointcloudtomesh.webp)      | ✓     | ✓    |      |         |      |          |
| [Easy3DZMapGenerator](3d_processing/easy3dzmapgenerator.html.md)         | - Generate a ZMap from a mesh or a point cloud.                                                                                  | ![](assets/images/sample_programs/3d_processing_easy3dzmapgenerator.webp)         | ✓     | ✓    |      |         |      |          |
| [Easy3DProcessing2D](3d_processing/easy3dprocessing2d.html.md)          | - Load a depth map.<br/>- Apply a 2D operator (the text reading tool EasyOCR2) on the gray scale pixel values.                   | ![](assets/images/sample_programs/3d_processing_easy3dprocessing2d.webp)          | ✓     |      |      |         |      |          |
| [Easy3DMultiViews](3d_processing/easy3dmultiviews.html.md)            | - Load and display point clouds in multiple instances of the class E3DViewer.                                                    | ![](assets/images/sample_programs/3d_processing_easy3dmultiviews.webp)            | ✓     | ✓    | ✓    |         |      |          |
| [Easy3DPCBWarpage](3d_processing/easy3dpcbwarpage.html.md)            | - Measure the warpage of a PCB with Easy3D.                                                                                      | ![](assets/images/sample_programs/3d_processing_easy3dpcbwarpage.webp)            | ✓     |      |      |         |      |          |
| [Easy3DCoaxlinkLLE](3d_processing/easy3dcoaxlinklle.html.md)           | - Acquire depth maps from a Coaxlink 3D LLE frame grabber and optionally save them.                                              | ![](assets/images/sample_programs/3d_processing_easy3dcoaxlinklle.webp)           | ✓     |      |      |         |      |          |
| [Easy3DLaserLineCalibration](3d_processing/easy3dlaserlinecalibration.html.md)  | - Compute and save the calibration model.<br/>- Apply the calibration to a depth map.<br/>- Save the resulting point cloud.      | ![](assets/images/sample_programs/3d_processing_easy3dlaserlinecalibration.webp)  | ✓     |      |      |         |      |          |
| [Easy3DLaserLineExtract](3d_processing/easy3dlaserlineextract.html.md)      | - Create a depth map from a series of profile images using the software laser line extractor.                                    | ![](assets/images/sample_programs/3d_processing_easy3dlaserlineextract.webp)      | ✓     |      | ✓    |         |      |          |
| [Easy3DObjectExtract](3d_processing/easy3dobjectextract.html.md)         | - Load an image.<br/>- Set the X, Y and Z resolutions.<br/>- Display the corresponding point cloud and the extracted 3D objects. | ![](assets/images/sample_programs/3d_processing_easy3dobjectextract.webp)         | ✓     | ✓    | ✓    |         |      |          |
| [Easy3DMatchMatch](3d_processing/easy3dmatchmatch.html.md)            | - Match a sample (point cloud or ZMap) on a reference (3D mesh, point cloud or ZMap).                                            | ![](assets/images/sample_programs/3d_processing_easy3dmatchmatch.webp)            | ✓     | ✓    |      |         |      |          |
| [Easy3DMatchAlign](3d_processing/easy3dmatchalign.html.md)            | - Align a sample (point cloud or ZMap) on a reference (3D mesh, point cloud or ZMap).                                            | ![](assets/images/sample_programs/3d_processing_easy3dmatchalign.webp)            | ✓     | ✓    | ✓    |         |      |          |
| [Easy3DMatchPointCloudMerger](3d_processing/easy3dmatchpointcloudmerger.html.md) | - Merge several point clouds by using a calibration procedure with a specific object.                                            | ![](assets/images/sample_programs/3d_processing_easy3dmatchpointcloudmerger.webp) | ✓     | ✓    |      |         |      |          |

## [Matching and Measurement](matching_and_measurement/index.html.md)

| Sample                                                             | The sample program demonstrates:                                                                                                                                                                                                                                                                                                                                                                                                                          | Image                                                                                                                             | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|--------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [EasyGaugeBasic](matching_and_measurement/easygaugebasic.html.md)      | - Load an image and apply a gauge from EasyGauge, chosen between a Point Gauge, a Line Gauge, a Rectangle Gauge, a Circle Gauge, a Wedge Gauge and a Polygon Gauge.<br/>- Implement graphical edition of the gauge geometry.<br/>- Set and display the main parameters of the gauges: the transition polarity, the choice of measure and various display options.                                                                                         | ![Matching-EasyGaugeBasic](../../assets/images/sample_programs/matching-easygaugebasic.webp<br/><br/>```default<br/>```           | ✓     | ✓    | ✓    |         | ✓    |          |
| [EasyGaugeRegion](matching_and_measurement/easygaugeregion.html.md)     | - Load an image and apply a gauge from EasyGauge, chosen between a Rectangle Gauge and a Circle Gauge.<br/>- Create a region corresponding to the gauge from the result.<br/>- Perform a blob encoding operation on it.                                                                                                                                                                                                                                   | ![Matching-EasyGaugeRegion](../../assets/images/sample_programs/matching-easygaugeregion.webp<br/><br/>```default<br/>```         | ✓     |      |      |         |      |          |
| [EasyGaugePolygon](matching_and_measurement/easygaugepolygon.html.md)    | - Use the class EPolygonGauge of the EasyGauge library.<br/>- Edit the geometry of the gauge and change the main parameters.<br/>- Configure various display options.                                                                                                                                                                                                                                                                                     | ![Matching-EasyGaugePolygon](../../assets/images/sample_programs/matching-easygaugepolygon.webp<br/><br/>```default<br/>```       | ✓     | ✓    |      |         |      |          |
| [EasyFindLearn](matching_and_measurement/easyfindlearn.html.md)       | - Load an image.<br/>- Move and size the region of interest to define the pattern.<br/>- Learn the pattern in the region of interest.<br/>- Change the tolerances using the Tolerances menu.<br/>- Find the pattern using the Find menu.                                                                                                                                                                                                                  | ![Matching-EasyFindLearn](../../assets/images/sample_programs/matching-easyfindlearn.webp<br/><br/>```default<br/>```             | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyFindVectorLearn](matching_and_measurement/easyfindvectorlearn.html.md) | - Use EasyFind with vectorized learning patterns. In this mode, learning is done on collections of 2D geometrical shapes rather than rasterized patterns.<br/>- Open a DXF or eVision vector model with File > Open Model. Right-click to change the polarity of a transition.<br/>- Save the vector model with the edited polarity.<br/>- Learn the pattern with the button Learn.<br/>- Open a search image and find the pattern with the button Find . | ![Matching-EasyFindVectorLearn](../../assets/images/sample_programs/matching-easyfindvectorlearn.webp<br/><br/>```default<br/>``` | ✓     | ✓    | ✓    |         |      |          |
| [EasyMatchLearn](matching_and_measurement/easymatchlearn.html.md)      | - Learn a pattern from a region of interest in an image.<br/>- Find one or several instances of that pattern in the same image.                                                                                                                                                                                                                                                                                                                           | ![Matching-EasyMatchLearn](../../assets/images/sample_programs/matching-easymatchlearn.webp<br/><br/>```default<br/>```           | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyObjectEChecker2](matching_and_measurement/easyobjectechecker2.html.md) | - Specify the inspection area.<br/>- Select fiducials for the localization and the alignment of the inspection area.<br/>- Train the method and apply it on new images.                                                                                                                                                                                                                                                                                   | ![Matching-EasyObjectEChecker2](../../assets/images/sample_programs/matching-easyobjectechecker2.webp<br/><br/>```default<br/>``` | ✓     | ✓    |      |         |      |          |
| [EasyObjectInertia](matching_and_measurement/easyobjectinertia.html.md)   | - Find blobs (objects or holes that have the same gray level range) in the image.<br/>- Keep only the blobs whose area is in a given range.                                                                                                                                                                                                                                                                                                               | ![Matching-EasyObjectInertia](../../assets/images/sample_programs/matching-easyobjectinertia.webp<br/><br/>```default<br/>```     | ✓     | ✓    | ✓    |         | ✓    | ✓        |

## [Deep Learning Inspection](deep_learning_inspection/index.html.md)

| Sample                                                                                   | The sample program demonstrates:                                                                                                     | Image                                                                                  | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [EasyClassifyTrain](deep_learning_inspection/easyclassifytrain.html.md)                         | - Train an EasyClassify tool in console mode.                                                                                        | —                                                                                      | ✓     | ✓    |      |         |      |          |
| [EasyClassifyInference](deep_learning_inspection/easyclassifyinference.html.md)                     | - Perform an inference with EasyClassify.<br/>- Display the results.                                                                 | ![](assets/images/sample_programs/deep_learning_easyclassifyinference.webp)            | ✓     | ✓    | ✓    |         |      | ✓        |
| [EasyClassifyMultiThreadInference](deep_learning_inspection/easyclassifymultithreadinference.html.md)          | - Perform a multithread inference with EasyClassify.<br/>- Implement external and internal multithreading.                           | ![](assets/images/sample_programs/deep_learning_easyclassifymultithreadinference.webp) |       | ✓    |      |         |      |          |
| [EasySegmentSupervisedTrain](deep_learning_inspection/easysegmentsupervisedtrain.html.md)                | - Train an EasySegment Supervised tool in console mode.                                                                              | —                                                                                      | ✓     | ✓    |      |         |      |          |
| [EasySegmentSupervisedInference](deep_learning_inspection/easysegmentsupervisedinference.html.md)            | - Perform an inference with EasySegment Supervised.<br/>- Display the results.                                                       | ![](assets/images/sample_programs/deep_learning_easysegmentsupervisedinference.webp)   | ✓     | ✓    | ✓    |         |      | ✓        |
| [EasySegmentSupervisedMultiThreadInference](deep_learning_inspection/easysegmentsupervisedmultithreadinference.html.md) | - Perform a multithread inference with EasySegment Supervised in console mode.<br/>- Implement external and internal multithreading. | —                                                                                      | ✓     |      |      |         |      |          |
| [EasySegmentUnsupervisedTrain](deep_learning_inspection/easysegmentunsupervisedtrain.html.md)              | - Train an EasySegment Unsupervised tool in console mode.                                                                            | —                                                                                      | ✓     | ✓    |      |         |      |          |
| [EasySegmentUnsupervisedInference](deep_learning_inspection/easysegmentunsupervisedinference.html.md)          | - Perform an inference with EasySegment Unsupervised.<br/>- Display the results.                                                     | ![](assets/images/sample_programs/deep_learning_easysegmentunsupervisedinference.webp) | ✓     | ✓    | ✓    |         |      | ✓        |
| [EasyLocateTrain](deep_learning_inspection/easylocatetrain.html.md)                           | - Train an EasyLocate tool in console mode.                                                                                          | —                                                                                      | ✓     | ✓    |      |         |      |          |
| [EasyLocateInference](deep_learning_inspection/easylocateinference.html.md)                       | - Perform an inference with EasyLocate.<br/>- Display the results.                                                                   | ![](assets/images/sample_programs/deep_learning_easylocateinference.webp)              | ✓     | ✓    | ✓    |         |      | ✓        |
| [EasyLocateMultiThreadInference](deep_learning_inspection/easylocatemultithreadinference.html.md)            | - Perform a multithread inference with EasyLocate.<br/>- Implement external and internal multithreading.                             | ![](assets/images/sample_programs/deep_learning_easylocatemultithreadinference.webp)   |       |      | ✓    |         |      |          |

## [Text and Code Reading](text_and_code_reading/index.html.md)

| Sample                                                                | The sample program demonstrates:                                                                                                            | Image                                                                     | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|-----------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [EasyCodeReading](text_and_code_reading/easycodereading.html.md)        | - Read a bar code, a data matrix and a QR code in an image with a single read call.                                                         | ![](assets/images/sample_programs/text_and_code-easycodereading.webp)     | ✓     | ✓    |      |         |      | ✓        |
| [EasyBarCodeRead](text_and_code_reading/easybarcoderead.html.md)        | - Read a 1D bar code in an image.                                                                                                           | ![](assets/images/sample_programs/text_and_code-easybarcoderead.webp)     | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyBarCodeReadMail](text_and_code_reading/easybarcodereadmail.html.md)    | - Read a mail bar code in an image.                                                                                                         | ![](assets/images/sample_programs/text_and_code-easybarcodereadmail.webp) | ✓     | ✓    |      |         |      |          |
| [EasyMatrixCodeRead](text_and_code_reading/easymatrixcoderead.html.md)     | - Read a data matrix code in an image.                                                                                                      | ![](assets/images/sample_programs/text_and_code-easymatrixcoderead.webp)  | ✓     | ✓    | ✓    |         |      | ✓        |
| [EasyQRCodeRead](text_and_code_reading/easyqrcoderead.html.md)         | - Read a QR code in an image.                                                                                                               | ![](assets/images/sample_programs/text_and_code-easyqrcoderead.webp)      | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyOcrRead](text_and_code_reading/easyocrread.html.md)            | - Read a text inside the ROI of an image using EasyOCR (superseded by EasyOCR2).<br/>- Use a configuration based on a OCR font file (.ocr). | ![](assets/images/sample_programs/text_and_code-easyocrread.webp)         | ✓     |      |      |         |      |          |
| [EasyOcr2Read](text_and_code_reading/easyocr2read.html.md)           | - Read a text inside the ROI of an image.                                                                                                   | ![](assets/images/sample_programs/text_and_code-easyocr2read.webp)        | ✓     | ✓    | ✓    |         | ✓    | ✓        |
| [EasyDeepOCRRead](text_and_code_reading/easydeepocrread.html.md)        | - Read all the texts in an image with a single read call.<br/>- Load a model.                                                               | ![](assets/images/sample_programs/text_and_code-easydeepocrread.webp)     | ✓     | ✓    | ✓    |         |      |          |
| [EasyDeepOCRReadConsole](text_and_code_reading/easydeepocrreadconsole.html.md) | - Read all the texts in an image with a single read call.<br/>- Load a model.<br/>- Set a topology.                                         |                                                                           |       |      |      | ✓       |      | ✓        |

## [Applicative Processing Tools](applicative_processing_tools/index.html.md)

| Sample                                                          | The sample program demonstrates:                                                                                                                                        | Image                                                                           | C++   | C#   | Qt   | CMake   | Vb   | Python   |
|-----------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-------|------|------|---------|------|----------|
| [EasySpotDetector](applicative_processing_tools/easyspotdetector.html.md) | - Load an image and the corresponding EasySpotDetector model.<br/>- Perform the detection of spots (particles and scratches).<br/>- Display the results over the image. | ![](assets/images/sample_programs/applicative_processing_easyspotdetector.webp) | ✓     | ✓    |      |         |      |          |

## [Python Specific](python_specific/index.html.md)

| Sample        | (Program)                                                                                     | The sample program demonstrates:                                                                                                                            | Image                                                                      | Python   |
|---------------|-----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|----------|
| eGrabber      | [egrabber_acquisition](python_specific/egrabber_acquisition.html.md)                           | - Acquire images through the eGrabber camera API.<br/>- Manipulate the images.                                                                              | ![](assets/images/sample_programs/python_specific-opencv_acquisition.webp) | ✓        |
| OpenCV camera | [openCV_acquisition (OpenCV Camera Acquisition)](python_specific/opencv_acquisition.html.md) | - Acquire images through the OpenCV camera API<br/>- Manipulate the images.                                                                                 | ![](assets/images/sample_programs/python_specific-opencv_acquisition.webp) | ✓        |
| OpenGL        | [easy3d_viewer](python_specific/easy3d_viewer.html.md)                                  | - Display a 3D resource (cloud or mesh) within an eVision 3DViewer using OpenGL and SDL2.                                                                   | ![](assets/images/sample_programs/python_specific-easy3d_viewer.webp)      | ✓        |
| Qt            | [easy_find_learn](python_specific/easy_find_learn.html.md)                                | - Learn a pattern.<br/>- Find it in an image using EasyFind in a Qt application.                                                                            | ![](assets/images/sample_programs/python_specific-easyfind.webp)           | ✓        |
| Qt            | [easy_gauge_basic](python_specific/easy_gauge_basic.html.md)                               | - Make subpixel measurements with EasyGauge in a Qt application.                                                                                            | ![](assets/images/sample_programs/python_specific-easygauge.webp)          | ✓        |
| VimbaX        | [vimbax_acquisition](python_specific/vimbax_acquisition.html.md)                             | - Acquire images through the VimbaX camera API<br/>- Manipulate the images.                                                                                 | ![](assets/images/sample_programs/python_specific-opencv_acquisition.webp) | ✓        |
| Base Web      | [Base Web](python_specific/base_web.html.md)                                       | - Make image acquisition in a web server.<br/>- Perform image processing.<br/>- Broadcast the images using HTTP to any remote client through a web browser. | ![](assets/images/sample_programs/python_specific-base_web.webp)           | ✓        |
| Basic Tkinter | [Basic Tkinter](python_specific/basic_tkinter.html.md)                                  | - Perform and rotate and scale an image.<br/>- Display the image using the Tkinter GUI framework.                                                           | ![](assets/images/sample_programs/python_specific-base_web.webp)           | ✓        |
