From 5ae998becfe611333e12e3229094c3a6bcbd1d85 Mon Sep 17 00:00:00 2001 From: Matt Hackmann Date: Mon, 2 May 2016 10:21:39 -0700 Subject: [PATCH] loading image by file/buffer now has same behaviour --- examples/files/opencv.png | Bin 0 -> 2362 bytes examples/files/over_text.png | Bin 5550 -> 3610 bytes src/OpenCV.cc | 4 ++-- test/unit.js | 26 ++++++++++++++------------ 4 files changed, 16 insertions(+), 14 deletions(-) create mode 100755 examples/files/opencv.png diff --git a/examples/files/opencv.png b/examples/files/opencv.png new file mode 100755 index 0000000000000000000000000000000000000000..521a0dcee0c948c362b1ee948b74aba262711573 GIT binary patch literal 2362 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 gTJo>nCH)X!0ID(F00Bvb?1A!ol zO2AO13JIqaLkZFeB~gMP5PCuh?fu@LaWl8S?99&W%=3BnDVu!5(N0oaL0n8sOcM6n zRcA4=0|GIzp9DvL0#4B0&X<5qKHA13+65IH9piroA@*w!Dgf~d?6!Xh!WrQo6dTDz zSOJ$CVOM{3#f|eZ^q2radA4J;Gdt6-U{wMNC?~yFC*k$K6ve|9V`a9qG z>?-Ky*MrtX4zyi`u%mzC86iQ&=hE2RXf?8s+|kit++*c}DkqxLpG-;V5%398AWOpD zjz^FeM<5!FmX(!#Wt(ofv;4{U@Nq}*!uzp^54T6k{a?R+tx3TI5D!YQ zk+zSOEaC(|=(z2>i{o3*{qVn61~L2LP#-_P{FR0a{vRK1`f6)yZwdP0D)`NB)yQED z@?j|@3>)zr6wj~7vqXDVhYg;DTdlA|^1p`?dMMT?#_qcLTn}{LyAc!VZNCnAWTMSW z=?igof3C?oC~b8ipe1Rr#N7|O(n`G%HN#ryf7|o%k;L2U*_pcG?T}Ru31PyBhb0wGNhYz<4tJ3+qNcmD_3$!d_O|bR+lW=|%JJuY z8r~Nad>e3qJ8-`>ZEzH=F#n6w2s5jPlg((2jaIy9c*64EN7NQ-&b!{v z%g1q37e0Bj>zl`N=9f3K-bgDu=9(Km5G-+_)f%Jn+H|&YoBPLHi>UR981BH3>r?=g zxkTTNz_JUuc}d|O33->XUtX=IXD>1KA%QLo{BA_uw}heyai!gVo`e@$M5QJ-7^J*2 zUtaAr@S|h5{1ZXX45v>bOY0_6M!t3EmZj~gf!mFV;VDKs;-w>}WPiN0Nj)3VN~vdI z2Ho6SE1>&3Q8IdR{ak2Dn6s@8T+&NDwYx2O${am6KuT6da_P8Jt%g;%$7((-(ZN(< z&N0Pb&w|=3h?;N+&8aJVq+E6G`;UhjzgX|lxWS39MR6(g=?4<}T2pC}O;6aoZjISQl5*US0=?~#tHjAd zC)uXW$3HMxwEsoWqD(i-Q<69@~RB%CEd3mkV-DLMtZwo+*{QS#u z+gErHoT$ZwT42Oy?C;H{`r(9bZNJ9}=Y;te`!h4Oo&b5k{t&aI@6&J&%m-9m&mt*3 z1=b#Ii`%HI ztaKoo*-+1{89KZ!s99ZUSFy8JcAL3(;9!EJq8xJ`c=OP|kK29Qz|GXt#%gXO?>dlk zE0*n9gJR4)pR%ru(Q}+jL`(I+d-2^lrgqA)Q#Pl4P8o0Ulw!ss^RcTiQOtD*2Z!rD z;H5?qkRsa79ylCss(pvxDQgG1^I4VM>-nWH8eqQ%(IoS37>E z9Tan&Vr2mz0m9snGk-)&<_P zZsiOObrRY}M@RpZhHR1oAH#O>8q;IznO@D%qDr;h)9*24E%IX=RuK-UfH=O7z zaxe3ZnLxYmt)KfOHQU=q40Uq2wz0j$Xcs&@>8Pc{N;;u-SXxd4j>#JZwxtE(_6qw;S5)X7ot-?Yy-ljd>x^Gca|)w@a~xXTBRR_rGFwtNR(oNus^tgsN2XR_xkzbsbDTv1RYX zg}&(fk!O?b@Ic(g&IzH{W`PcjUgB80$p$B;n_uK$0$q~;SNIH&P8bL4=<1>xX5V-d zTB0Y=!#01_9jdqjNO}D6lqTs>V#nZC?E4qe{j%|1UIzQ}^K)~P#XQGWDWOnU#@LHn ztwmKtdHEQLfjL_<`HXOO<$(R5RKcAif6)Fh$&XhVivv`b(9qD>*saYKULaz1<`y_* zA20Tzx^h2(M@G?s{tGYdE#JQ{wJ3f`7YFb#@gc@QS65eCn@Xe6ii>kB(R0uAyadPo q#oxLAp#R6fzmS0)#%8V9L9xxF3NP>Zo96yA0nEnnYU$-$5B?7sK01y7 literal 5550 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 diff --git a/src/OpenCV.cc b/src/OpenCV.cc index 62007a45..14a498da 100755 --- a/src/OpenCV.cc +++ b/src/OpenCV.cc @@ -37,14 +37,14 @@ NAN_METHOD(OpenCV::ReadImage) { } else if (info[0]->IsString()) { std::string filename = std::string(*Nan::Utf8String(info[0]->ToString())); - mat = cv::imread(filename); + mat = cv::imread(filename, CV_LOAD_IMAGE_UNCHANGED); } else if (Buffer::HasInstance(info[0])) { uint8_t *buf = (uint8_t *) Buffer::Data(info[0]->ToObject()); unsigned len = Buffer::Length(info[0]->ToObject()); cv::Mat *mbuf = new cv::Mat(len, 1, CV_64FC1, buf); - mat = cv::imdecode(*mbuf, -1); + mat = cv::imdecode(*mbuf, CV_LOAD_IMAGE_UNCHANGED); if (mat.empty()) { argv[0] = Nan::Error("Error loading file"); diff --git a/test/unit.js b/test/unit.js index 309cf628..c13191cf 100755 --- a/test/unit.js +++ b/test/unit.js @@ -127,7 +127,7 @@ test(".norm", function(assert){ var errorL2 = im.norm(im2, cv.Constants.NORM_L2); assert.equal(errorL2, 7295.591339980605); - + errorL2 = im.norm(im, cv.Constants.NORM_L2); assert.equal(errorL2, 0); assert.end(); @@ -205,23 +205,25 @@ test(".bitwiseXor", function(assert){ test("Image read from file", function(assert){ - cv.readImage("./examples/files/mona.png", function(err, im){ + cv.readImage("./examples/files/opencv.png", function(err, im){ assert.ok(im); - assert.equal(im.width(), 500); - assert.equal(im.height(), 756) - assert.equal(im.empty(), false) - assert.end() + assert.equal(im.width(), 82); + assert.equal(im.height(), 99); + assert.equal(im.channels(), 4); + assert.equal(im.empty(), false); + assert.end(); }) }) test("read Image from buffer", function(assert){ - cv.readImage(fs.readFileSync('./examples/files/mona.png'), function(err, im){ + cv.readImage(fs.readFileSync('./examples/files/opencv.png'), function(err, im){ assert.ok(im); - assert.equal(im.width(), 500); - assert.equal(im.height(), 756) - assert.equal(im.empty(), false) - assert.end() + assert.equal(im.width(), 82); + assert.equal(im.height(), 99); + assert.equal(im.channels(), 4); + assert.equal(im.empty(), false); + assert.end(); }) }) @@ -242,7 +244,7 @@ test("Cascade Classifier", function(assert){ test("ImageDataStream", function(assert){ var s = new cv.ImageDataStream() - s.on('load', function(im){ + s.on('load', function(im){ assert.ok(im) assert.equal(im.empty(), false); assert.end()