Read a Specific Area/Region
Dynamsoft Barcode Reader (DBR) will locate the code region and decode the entire image by default. However, if only a specific region of the image or video is required to locate the barcode, you can define a Region Of Interest (ROI) via the parameter TargetROIDef
. After defining a specific region, DBR will only decode barcodes within that region. Of course, this is very conducive to increasing the speed. Please refer to Design of the TargetROIDef Object
to learn more about TargetROIDef
and how it works,.
Single Region Specification
- Configure region via
SimplifiedCaptureVisionSettings
- JavaScript
- C++
// Obtain current runtime settings of `router` instance. Here we use `ReadSingleBarcode` as an example. You can change it to your own template name or the name of other preset template. let settings = await router.getSimplifiedSettings("ReadSingleBarcode"); // Specify the ROI settings.roi.points[0] = {x:10, y:10}; settings.roi.points[1] = {x:90, y:10}; settings.roi.points[2] = {x:90, y:90}; settings.roi.points[3] = {x:10, y:90}; // Update the settings to a specific template. await router.updateSettings("ReadSingleBarcode", settings);
char szErrorMsg[256] = {0}; // Obtain current runtime settings of `CCaptureVisionRouter` instance. CCaptureVisionRouter* cvr = new CCaptureVisionRouter; SimplifiedCaptureVisionSettings settings; cvr->GetSimplifiedSettings(CPresetTemplate::PT_READ_BARCODES, &settings); // Specify the ROI settings.roi.points[0].Set(10, 10); settings.roi.points[1].Set(90, 10); settings.roi.points[2].Set(90, 90); settings.roi.points[3].Set(10, 90); settings.roiMeasuredInPercentage = 1; // Update the settings. cvr->UpdateSettings(CPresetTemplate::PT_READ_BARCODES, &settings, szErrorMsg, 256);
- Configure region via
JSON Template
{
"CaptureVisionTemplates": [
{
"Name" : "CV_0",
"ImageROIProcessingNameArray": ["TA_0" ]
}
],
"TargetROIDefOptions" : [
{
"Name" : "TA_0",
"Location":
{
"Offset":
{
"ReferenceObjectOriginIndex": 0,
"ReferenceObjectSizeType": "default",
"MeasuredByPercentage" : 1,
"FirstPoint" : [ 10, 10 ],
"SecondPoint" : [ 90, 10 ],
"ThirdPoint" : [ 90, 90 ],
"FourthPoint" : [ 10, 90 ]
}
},
"TaskSettingNameArray": [ "BR_0" ]
}
],
"BarcodeReaderTaskSettingOptions": [
{
"Name" : "BR_0"
}
]
}
Apply the above settings following the article Use Templates for Configuring Parameters.
Multiple Region Specification
If you need to specify more than one ROI, you have to use a JSON Template
. Furthermore, you can even configure different barcode decoding parameter settings for each region.
Below is an example template illustrating how to configure two ROIs with different barcode format parameter settings.
{
"CaptureVisionTemplates": [
{
"Name" : "CV_0",
"ImageROIProcessingNameArray": ["TA_0", "TA_1"]
}
],
"TargetROIDefOptions" : [
{
"Name" : "TA_0",
"Location":
{
"Offset":
{
"ReferenceObjectOriginIndex": 0,
"ReferenceObjectSizeType": "default",
"MeasuredByPercentage" : 1,
"FirstPoint" : [ 0, 0 ],
"SecondPoint" : [ 100, 0 ],
"ThirdPoint" : [ 100, 20 ],
"FourthPoint" : [ 0, 20 ]
}
},
"TaskSettingNameArray": ["BR_0"]
},
{
"Name" : "TA_1",
"Location":
{
"Offset":
{
"ReferenceObjectOriginIndex": 0,
"ReferenceObjectSizeType": "default",
"MeasuredByPercentage" : 1,
"FirstPoint" : [ 0, 80 ],
"SecondPoint" : [ 100, 80 ],
"ThirdPoint" : [ 100, 100 ],
"FourthPoint" : [ 0, 100 ]
}
},
"TaskSettingNameArray": ["BR_1"]
}
],
"BarcodeReaderTaskSettingOptions": [
{
"Name" : "BR_0",
"BarcodeFormatIds": ["BF_ONED"]
},
{
"Name" : "BR_1",
"BarcodeFormatIds": ["BF_QR_CODE"]
}
]
}