summaryrefslogtreecommitdiff
path: root/mv_barcode
diff options
context:
space:
mode:
authorTae-Young Chung <ty83.chung@samsung.com>2020-07-01 04:12:57 +0000
committerGerrit Code Review <gerrit@review>2020-07-01 04:12:57 +0000
commit2acb2a1149d8008c80f3f63f8749c0726e9402e8 (patch)
treeb9e76d74b593c5a3a6bc0fd0905aa704ee15ebd1 /mv_barcode
parent2b903e7eef466ecf7dc3edee94db00a57a0bdffa (diff)
parent1c025fb5725fd99e3ad9fed32304cc30664c1322 (diff)
downloadmediavision-2acb2a1149d8008c80f3f63f8749c0726e9402e8.tar.gz
mediavision-2acb2a1149d8008c80f3f63f8749c0726e9402e8.tar.bz2
mediavision-2acb2a1149d8008c80f3f63f8749c0726e9402e8.zip
Merge "[Barcode] Add new barcode types" into tizensubmit/tizen/20200701.041707
Diffstat (limited to 'mv_barcode')
-rw-r--r--mv_barcode/barcode_detector/src/Barcode.cpp30
-rw-r--r--mv_barcode/barcode_detector/src/mv_barcode_detect_open.cpp30
-rw-r--r--mv_barcode/barcode_generator/include/BarcodeOptions.h8
-rw-r--r--mv_barcode/barcode_generator/src/BarcodeGenerator.cpp2
-rw-r--r--mv_barcode/barcode_generator/src/mv_barcode_generate.c4
-rw-r--r--mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp18
6 files changed, 82 insertions, 10 deletions
diff --git a/mv_barcode/barcode_detector/src/Barcode.cpp b/mv_barcode/barcode_detector/src/Barcode.cpp
index 8523722d..cff005cb 100644
--- a/mv_barcode/barcode_detector/src/Barcode.cpp
+++ b/mv_barcode/barcode_detector/src/Barcode.cpp
@@ -68,9 +68,27 @@ mv_barcode_type_e Barcode::getType(void) const
case zbar::ZBAR_I25:
return MV_BARCODE_I2_5;
+ case zbar::ZBAR_EAN2:
+ return MV_BARCODE_EAN_2;
+
+ case zbar::ZBAR_EAN5:
+ return MV_BARCODE_EAN_5;
+
+ case zbar::ZBAR_CODE93:
+ return MV_BARCODE_CODE93;
+
+ case zbar::ZBAR_CODABAR:
+ return MV_BARCODE_CODABAR;
+
+ case zbar::ZBAR_DATABAR:
+ return MV_BARCODE_DATABAR;
+
+ case zbar::ZBAR_DATABAR_EXP:
+ return MV_BARCODE_DATABAR_EXPAND;
+
default:
- LOGE("ZBar symbol colorspace is not supported by media vision");
- return MV_BARCODE_UNDEFINED;
+ LOGE("ZBar symbol colorspace[%d] is not supported by media vision", barcodeType);
+ return MV_BARCODE_UNKNOWN;
}
}
@@ -87,7 +105,6 @@ int Barcode::calculateLocation(mv_quadrangle_s& location) const
numberOfVertexes);
return MEDIA_VISION_ERROR_INVALID_OPERATION;
}
-
/* bounding quadrangle is computing by 4 marginal points */
mv_point_s first = {__pBarcodeObj->get_location_x(0),
__pBarcodeObj->get_location_y(0)};
@@ -113,6 +130,13 @@ int Barcode::calculateLocation(mv_quadrangle_s& location) const
}
}
+ zbar::zbar_symbol_type_t type = __pBarcodeObj->get_type();
+ if (type == zbar::ZBAR_EAN2 || type == zbar::ZBAR_EAN5) {
+ /* In case of EAN2 and EAN5, they are add-on and
+ zbar returns only the last column's location.
+ So, minX is always maxX. */
+ minX = 0;
+ }
/* magic number("5") mean minimal size of detected area which will be returned. */
if (abs(minX - maxX) < 5 || abs(minY - maxY) < 5)
return MEDIA_VISION_ERROR_INVALID_OPERATION;
diff --git a/mv_barcode/barcode_detector/src/mv_barcode_detect_open.cpp b/mv_barcode/barcode_detector/src/mv_barcode_detect_open.cpp
index c58909bb..0d4be8e8 100644
--- a/mv_barcode/barcode_detector/src/mv_barcode_detect_open.cpp
+++ b/mv_barcode/barcode_detector/src/mv_barcode_detect_open.cpp
@@ -67,12 +67,28 @@ int mv_barcode_detect_open(
* 1 - only linear barcodes
* 2 - only QR codes
*/
+ scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 0);
+ scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_POSITION, 1);
switch (target_val) {
case 0:
- scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_UPCA, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_UPCE, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN8, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN13, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_CODE128, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_CODE39, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_I25, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN2, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN2, zbar::ZBAR_CFG_POSITION, 1);
+ scanner.set_config(zbar::ZBAR_EAN5, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN5, zbar::ZBAR_CFG_POSITION, 1);
+ scanner.set_config(zbar::ZBAR_CODE93, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_CODABAR, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_DATABAR, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_DATABAR_EXP, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_QRCODE, zbar::ZBAR_CFG_ENABLE, 1);
break;
case 1:
- scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 0);
scanner.set_config(zbar::ZBAR_UPCA, zbar::ZBAR_CFG_ENABLE, 1);
scanner.set_config(zbar::ZBAR_UPCE, zbar::ZBAR_CFG_ENABLE, 1);
scanner.set_config(zbar::ZBAR_EAN8, zbar::ZBAR_CFG_ENABLE, 1);
@@ -80,13 +96,18 @@ int mv_barcode_detect_open(
scanner.set_config(zbar::ZBAR_CODE128, zbar::ZBAR_CFG_ENABLE, 1);
scanner.set_config(zbar::ZBAR_CODE39, zbar::ZBAR_CFG_ENABLE, 1);
scanner.set_config(zbar::ZBAR_I25, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN2, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_EAN5, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_CODE93, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_CODABAR, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_DATABAR, zbar::ZBAR_CFG_ENABLE, 1);
+ scanner.set_config(zbar::ZBAR_DATABAR_EXP, zbar::ZBAR_CFG_ENABLE, 1);
break;
case 2:
- scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 0);
scanner.set_config(zbar::ZBAR_QRCODE, zbar::ZBAR_CFG_ENABLE, 1);
break;
default:
- LOGW("Unavailabe target value %d", target_val);
+ LOGW("Unavailable target value %d", target_val);
}
int numberOfBarcodes = scanner.scan(greyImage);
@@ -125,6 +146,7 @@ int mv_barcode_detect_open(
types[i] = curBarcode.getType();
+ LOGI("barcode type: %d with message %s", types[i], curMessage);
int err = curBarcode.calculateLocation(barcodeLocations[i]);
if (err != MEDIA_VISION_ERROR_NONE) {
LOGW("Can't determine location for barcode, detection is terminated");
diff --git a/mv_barcode/barcode_generator/include/BarcodeOptions.h b/mv_barcode/barcode_generator/include/BarcodeOptions.h
index bebfe46c..5399b8a6 100644
--- a/mv_barcode/barcode_generator/include/BarcodeOptions.h
+++ b/mv_barcode/barcode_generator/include/BarcodeOptions.h
@@ -37,7 +37,13 @@ enum BarcodeType {
BARCODE_EAN13 = BARCODE_EAN8,
BARCODE_CODE39 = 8,
BARCODE_CODE128 = 20,
- BARCODE_INTERLEAVE_2_5 = 3
+ BARCODE_INTERLEAVE_2_5 = 3,
+ BARCODE_EAN2 = BARCODE_EAN8,
+ BARCODE_EAN5 = BARCODE_EAN8,
+ BARCODE_CODE93 = 25,
+ BARCODE_CODABAR = 18,
+ BARCODE_DATABAR = 29,
+ BARCODE_DATABAR_EXPAND = 31
};
/**
diff --git a/mv_barcode/barcode_generator/src/BarcodeGenerator.cpp b/mv_barcode/barcode_generator/src/BarcodeGenerator.cpp
index 11a01cd2..c54bfe1f 100644
--- a/mv_barcode/barcode_generator/src/BarcodeGenerator.cpp
+++ b/mv_barcode/barcode_generator/src/BarcodeGenerator.cpp
@@ -29,6 +29,8 @@
#include <vector>
#include <unistd.h>
+#define ZINT_COLOUR_SIZE 10
+
namespace MediaVision {
namespace Barcode {
diff --git a/mv_barcode/barcode_generator/src/mv_barcode_generate.c b/mv_barcode/barcode_generator/src/mv_barcode_generate.c
index 5f0c38de..83b69e5e 100644
--- a/mv_barcode/barcode_generator/src/mv_barcode_generate.c
+++ b/mv_barcode/barcode_generator/src/mv_barcode_generate.c
@@ -55,7 +55,7 @@ int mv_barcode_generate_source(
MEDIA_VISION_FUNCTION_ENTER();
if (type < MV_BARCODE_QR ||
- type >= MV_BARCODE_UNDEFINED) {
+ type >= MV_BARCODE_UNKNOWN) {
LOGE("Not supported barcode type [%d]", type);
return MEDIA_VISION_ERROR_INVALID_PARAMETER;
}
@@ -122,7 +122,7 @@ int mv_barcode_generate_image(
}
if (type < MV_BARCODE_QR ||
- type >= MV_BARCODE_UNDEFINED) {
+ type >= MV_BARCODE_UNKNOWN) {
LOGE("Not supported barcode type [%d]", type);
return MEDIA_VISION_ERROR_INVALID_PARAMETER;
}
diff --git a/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp b/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
index 62a3c823..c689f9ff 100644
--- a/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
+++ b/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
@@ -73,6 +73,24 @@ BarcodeType convertBarcodeType(mv_barcode_type_e type)
case MV_BARCODE_I2_5:
barcodeType = BARCODE_INTERLEAVE_2_5;
break;
+ case MV_BARCODE_EAN_2:
+ barcodeType = BARCODE_EAN2;
+ break;
+ case MV_BARCODE_EAN_5:
+ barcodeType = BARCODE_EAN5;
+ break;
+ case MV_BARCODE_CODE93:
+ barcodeType = BARCODE_CODE93;
+ break;
+ case MV_BARCODE_DATABAR:
+ barcodeType = BARCODE_DATABAR;
+ break;
+ case MV_BARCODE_DATABAR_EXPAND:
+ barcodeType = BARCODE_DATABAR_EXPAND;
+ break;
+ case MV_BARCODE_CODABAR:
+ barcodeType = BARCODE_CODABAR;
+ break;
default:
break;
}