[SCM] Multi-format 1D/2D barcode image processing library branch, upstream, updated. 24d4480bc48cf9eabf7b2bd2f528248b0e458809
flyashi
flyashi at 59b500cc-1b3d-0410-9834-0bbf25fbcc57
Wed Aug 4 01:32:32 UTC 2010
The following commit has been merged in the upstream branch:
commit 6675cb36319cb20ed13a513e7bd5202f35c99b57
Author: flyashi <flyashi at 59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Date: Wed Jul 14 18:38:59 2010 +0000
Some updates to the C++ test binary:
- calls MultiFormatReader directly
- code cleanup, removing parts of the QR-specific framework
- associated change to blackboxtest
git-svn-id: http://zxing.googlecode.com/svn/trunk@1482 59b500cc-1b3d-0410-9834-0bbf25fbcc57
diff --git a/cpp/blackboxtest.sh b/cpp/blackboxtest.sh
index 0aba8cd..b93fefe 100755
--- a/cpp/blackboxtest.sh
+++ b/cpp/blackboxtest.sh
@@ -22,7 +22,7 @@ for format in $formats; do
tmp="${pic%JPG}";
txt="${tmp%jpg}txt";
expected=`cat "$txt"`;
- actual=`build/zxing . $pic`;
+ actual=`build/zxing $pic`;
if [ "$expected" == "$actual" ]; then
echo "passed."
passed=$((passed+1));
diff --git a/cpp/magick/src/main.cpp b/cpp/magick/src/main.cpp
index 292984d..06d9dd1 100644
--- a/cpp/magick/src/main.cpp
+++ b/cpp/magick/src/main.cpp
@@ -25,9 +25,9 @@
#include <Magick++.h>
#include "MagickBitmapSource.h"
#include <zxing/common/Counted.h>
-#include <zxing/qrcode/QRCodeReader.h>
+//#include <zxing/qrcode/QRCodeReader.h>
#include <zxing/Binarizer.h>
-#include <zxing/oned/MultiFormatUPCEANReader.h>
+#include <zxing/MultiFormatReader.h>
#include <zxing/Result.h>
#include <zxing/ReaderException.h>
#include <zxing/common/GlobalHistogramBinarizer.h>
@@ -37,122 +37,24 @@
#include <zxing/common/IllegalArgumentException.h>
#include <zxing/BinaryBitmap.h>
-#include <zxing/qrcode/detector/Detector.h>
-#include <zxing/qrcode/detector/QREdgeDetector.h>
-#include <zxing/qrcode/decoder/Decoder.h>
+//#include <zxing/qrcode/detector/Detector.h>
+//#include <zxing/qrcode/detector/QREdgeDetector.h>
+//#include <zxing/qrcode/decoder/Decoder.h>
using namespace Magick;
using namespace std;
using namespace zxing;
-using namespace zxing::qrcode;
+//using namespace zxing::qrcode;
-void draw_matrix(Image& image, Ref<BitMatrix> matrix) {
- int width = matrix->getWidth();
- int height = matrix->getHeight();
-// image.modifyImage();
-// image.type(TrueColorType);
-
- PixelPacket* pixels = image.getPixels(0, 0, width, height);
-
- PixelPacket* pixel = pixels;
- ColorMono color;
- for (int y = 0; y < height; y++) {
- for (int x = 0; x < width; x++) {
- color.mono(!matrix->get(x, y));
- *pixel = color;
- pixel++;
- }
- }
- image.syncPixels();
-}
-
-void save_matrix(Ref<BitMatrix> matrix, string filename, float scale = 1.0) {
- Image image(Geometry(matrix->getWidth(), matrix->getHeight()), Color(MaxRGB, MaxRGB, MaxRGB, 0));
- int width = matrix->getWidth();
- int height = matrix->getHeight();
- draw_matrix(image, matrix);
- image.scale(Geometry(width*scale, height*scale));
- image.write(filename);
-}
-
-void save_grid(Ref<BitMatrix> matrix, string filename, Ref<PerspectiveTransform> transform, int dimension) {
- Image image(Geometry(matrix->getWidth(), matrix->getHeight()), Color(MaxRGB, MaxRGB, MaxRGB, 0));
-
- draw_matrix(image, matrix);
-
- image.strokeColor(Color(MaxRGB, 0, 0, MaxRGB / 3));
- image.fillColor(Color(0, 0, 0, MaxRGB));
- image.strokeWidth(1);
-
- for (int i = 0; i <= dimension; i++) {
- vector<float> tpoints(4);
-
- tpoints[0] = 0;
- tpoints[1] = i;
- tpoints[2] = dimension;
- tpoints[3] = i;
- transform->transformPoints(tpoints);
-
- DrawableLine line1(tpoints[0], tpoints[1], tpoints[2], tpoints[3]);
- image.draw(line1);
-
- tpoints[0] = i;
- tpoints[1] = 0;
- tpoints[2] = i;
- tpoints[3] = dimension;
- transform->transformPoints(tpoints);
-
- DrawableLine line2(tpoints[0], tpoints[1], tpoints[2], tpoints[3]);
- image.draw(line2);
- }
-
- image.write(filename);
-}
-
-Ref<Result> decode2D(string out_prefix, Ref<BinaryBitmap> image, string& cell_grid, string& cell_transformed) {
-
- Decoder decoder;
-
- QREdgeDetector detector = QREdgeDetector(image->getBlackMatrix());
-
- Ref<DetectorResult> detectorResult(detector.detect());
-
- vector<Ref<ResultPoint> > points(detectorResult->getPoints());
-
- Ref<DecoderResult> decoderResult(decoder.decode(detectorResult->getBits()));
-
- Ref<Result> result(new Result(decoderResult->getText(),
- decoderResult->getRawBytes(),
- points,
- BarcodeFormat_QR_CODE));
- return result;
-
-}
-
-Ref<Result> decode1D(string out_prefix, Ref<BinaryBitmap> image, string& cell_grid, string& cell_transformed) {
-
-
- Ref<Reader> reader(new oned::MultiFormatUPCEANReader);
- Ref<Result> result(new Result(*reader->decode(image)));
- return result;
+Ref<Result> decode(Ref<BinaryBitmap> image) {
+ Ref<Reader> reader(new MultiFormatReader);
+ return Ref<Result> (new Result(*reader->decode(image)));
}
-//TODO(flyashi): Call MultiFormatReader directly
-Ref<Result> decode(string out_prefix, Ref<BinaryBitmap> image, string& cell_grid, string& cell_transformed) {
- try {
- return decode1D(out_prefix,image,cell_grid,cell_transformed);
- } catch (ReaderException re) {
- return decode2D(out_prefix,image,cell_grid,cell_transformed);
- }
-}
+int test_image(Image& image, bool localized) {
-int test_image(Image& image, string out_prefix, bool localized) {
- string cell_mono;
- string cell_transformed;
string cell_result;
- string cell_grid;
- string result_color = "red";
int res = -1;
Ref<BitMatrix> matrix(NULL);
@@ -168,17 +70,9 @@ int test_image(Image& image, string out_prefix, bool localized) {
binarizer = new GlobalHistogramBinarizer(source);
}
- if (out_prefix.size()) {
- string monofile = out_prefix + ".mono.png";
- matrix = binarizer->getBlackMatrix();
- //save_matrix(matrix, monofile);
- cell_mono = "<img src=\"" + monofile + "\" />";
- }
-
Ref<BinaryBitmap> binary(new BinaryBitmap(binarizer));
- Ref<Result> result(decode(out_prefix, binary, cell_grid, cell_transformed));
+ Ref<Result> result(decode(binary));
cell_result = result->getText()->getText();
- result_color = "green";
res = 0;
} catch (ReaderException e) {
cell_result = "zxing::ReaderException: " + string(e.what());
@@ -195,25 +89,22 @@ int test_image(Image& image, string out_prefix, bool localized) {
}
cout << cell_result;
-
return res;
}
-int test_image_local(Image& image, string out_prefix) {
- return test_image(image, out_prefix, true);
+int test_image_local(Image& image) {
+ return test_image(image, true);
}
-int test_image_global(Image& image, string out_prefix) {
- return test_image(image, out_prefix, false);
+int test_image_global(Image& image) {
+ return test_image(image, false);
}
-
int main(int argc, char** argv) {
- if (argc <= 2) {
- cout << "Usage: " << argv[0] << " [<outfolder> | \"-\"] <filename1> [<filename2> ...]" << endl;
+ if (argc <= 1) {
+ cout << "Usage: " << argv[0] << " <filename1> [<filename2> ...]" << endl;
return 1;
}
- string outfolder = argv[1];
// int total = argc - 2;
int gonly = 0;
@@ -221,7 +112,7 @@ int main(int argc, char** argv) {
int both = 0;
int neither = 0;
- for (int i = 2; i < argc; i++) {
+ for (int i = 1; i < argc; i++) {
string infilename = argv[i];
// cerr << "Processing: " << infilename << endl;
Image image;
@@ -232,19 +123,11 @@ int main(int argc, char** argv) {
continue;
}
-
int gresult = 1;
int lresult = 1;
- if (outfolder == string("-")) {
- gresult = test_image_global(image, "");
-// lresult = test_image_local(image, "");
- } else {
- replace(infilename.begin(), infilename.end(), '/', '_');
- string prefix = string(outfolder) + string("/") + infilename;
- gresult = test_image_global(image, prefix + ".g");
- // lresult = test_image_local(image, prefix + ".l");
- }
+ gresult = test_image_global(image);
+// lresult = test_image_local(image);
gresult = gresult == 0;
// lresult = lresult == 0;
--
Multi-format 1D/2D barcode image processing library
More information about the Pkg-google-commits
mailing list