diff options
author | Tae-Young Chung <ty83.chung@samsung.com> | 2020-07-01 04:12:57 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@review> | 2020-07-01 04:12:57 +0000 |
commit | 2acb2a1149d8008c80f3f63f8749c0726e9402e8 (patch) | |
tree | b9e76d74b593c5a3a6bc0fd0905aa704ee15ebd1 /mv_barcode | |
parent | 2b903e7eef466ecf7dc3edee94db00a57a0bdffa (diff) | |
parent | 1c025fb5725fd99e3ad9fed32304cc30664c1322 (diff) | |
download | mediavision-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')
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; } |