Open localhosted opened 6 years ago
Yep, I'm experiencing the same issue.
same here, at most i can get some green boxes to show up with debug visualizations (and only the boxes
property set in the result object), but even those are completely in the wrong place.
The live_w_locator example works, but i can't reproduce it even if i more or less copypaste the code into a new project.
I was struggling this as well. I think it's very sensitive to your camera quality. I can hold a barcode in front of my laptop's webcam for a minute or two, adjusting it throughout, and it will eventually detect it. When using my phone's camera, it was still very finicky, but recognized the barcode quicker.
To reduce number of false positives, use a buffer and sensitivity threshold. For example, increase frequency to 20 and save all barcode scans. If a specific barcode is scanned at least 5 times return this barcode.
e.g. increase frequency to 20 and save each code in array. The first barcode to be scanned 5 or 6 times is a better match. You can increase this number to 8 for even higher precision.
increase frequency to 20 and save each code in array
Could you please show some code example of this in action?
totally untested, but this is what nitinsbuzz is thinking of GIOkafor
let detectionHash = {};
function onDetected(result) {
detectionHash[result.codeResult.code]++;
if(detectionHash[result.codeResult.code] >= 5) {
detectionHash = {};
call_success_function(result.codeResult.code);
}
}
not a bad idea, might consider doing that, if it doesn't exhibit speed issues.
Thanks @ericblade, I decided to use Qr codes instead because it provides more reliable results but will definitely try this next time I have to implement barcode scanning.
@GIOkafor how do select QR code?
I can confirm EAN barcode scanning on iOS 11 Safari. very cool!
totally untested, but this is what nitinsbuzz is thinking of GIOkafor
let detectionHash = {}; function onDetected(result) { detectionHash[result.codeResult.code]++; if(detectionHash[result.codeResult.code] >= 5) { detectionHash = {}; call_success_function(result.codeResult.code); } }
not a bad idea, might consider doing that, if it doesn't exhibit speed issues.
This is a great fix! Thanks. I have near 100% accuracy now by setting it to 5. 4 and 3 seem to work pretty well too. Keep in mind the higher the buffer the slower it is.
For sure. It works pretty well, but I eventually went for something that does a quick checksum validation on it, and if the barcode appears to be valid then accept it the first time, otherwise if it scans the same code several times with a high confidence, then accept it. I wrote a checksum checker some time ago here https://github.com/ericblade/barcode-validator .. i just realized i never documented it, but there are some tests at the bottom that are pretty self-explanatory on how to operate it.
I've tried getting quagga to work, but none of the EAN in consumer products, managed to get properly decoded. Here is an image that doesn't get recognized, pretty much anywhere (even quagga alternatives): https://imgur.com/a/SDnrR