diff --git a/cpp/blackboxtest.sh b/cpp/blackboxtest.sh index 0aba8cda8..b93fefe2e 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 292984d32..06d9dd1ed 100644 --- a/cpp/magick/src/main.cpp +++ b/cpp/magick/src/main.cpp @@ -25,9 +25,9 @@ #include #include "MagickBitmapSource.h" #include -#include +//#include #include -#include +#include #include #include #include @@ -37,122 +37,24 @@ #include #include -#include -#include -#include +//#include +//#include +//#include using namespace Magick; using namespace std; using namespace zxing; -using namespace zxing::qrcode; +//using namespace zxing::qrcode; -void draw_matrix(Image& image, Ref 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 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 matrix, string filename, Ref 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 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 decode2D(string out_prefix, Ref image, string& cell_grid, string& cell_transformed) { - - Decoder decoder; - - QREdgeDetector detector = QREdgeDetector(image->getBlackMatrix()); - - Ref detectorResult(detector.detect()); - - vector > points(detectorResult->getPoints()); - - Ref decoderResult(decoder.decode(detectorResult->getBits())); - - Ref result(new Result(decoderResult->getText(), - decoderResult->getRawBytes(), - points, - BarcodeFormat_QR_CODE)); - return result; - -} - -Ref decode1D(string out_prefix, Ref image, string& cell_grid, string& cell_transformed) { - - - Ref reader(new oned::MultiFormatUPCEANReader); - Ref result(new Result(*reader->decode(image))); - return result; -} - -//TODO(flyashi): Call MultiFormatReader directly -Ref decode(string out_prefix, Ref 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); - } +Ref decode(Ref image) { + Ref reader(new MultiFormatReader); + return Ref (new Result(*reader->decode(image))); } -int test_image(Image& image, string out_prefix, bool localized) { - string cell_mono; - string cell_transformed; +int test_image(Image& image, bool localized) { + string cell_result; - string cell_grid; - string result_color = "red"; int res = -1; Ref 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 = ""; - } - Ref binary(new BinaryBitmap(binarizer)); - Ref result(decode(out_prefix, binary, cell_grid, cell_transformed)); + Ref 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] << " [ | \"-\"] [ ...]" << endl; + if (argc <= 1) { + cout << "Usage: " << argv[0] << " [ ...]" << 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;