I have, of late, been rather more attached to QR Codes than might be healthy. I’ve been trying all sorts of sizes and input data, printing them, and seeing what camera phones can scan them. I tried three different devices to scan the codes:
- iPhone 4s – 8 MP, running either i-nigma (free) or Denso Wave’s own QRdeCODE ($2). QRdeCODE is better, but then, it should be, since it was created by the developer of the QR Code standard.
- Nexus 7 – 1.2 MP, running Google Goggles.
- Nokia X2-01 – Catherine‘s new(ish) phone, which I can’t believe only has a 0.3 MP VGA camera on it. Still, it worked for a small range of codes.
QR Code readability is defined by the module size; that is, the number of device pixels (screen or print) that represent a single QR Code pixel. Denso Wave recommends that each module is made up of 4 or more dots. I was amazed that the iPhone could read images with a module size of 1 from the screen, like this one:
On this laptop, one pixel is about 0.24 mm. The other cameras didn’t fare so well on reading from the screen:
- iPhone 4s – Min module size: 1-2 pixels (0.24-0.48 mm/module)
- Nexus 7 – Min module size: 2-3 pixels (0.48-0.72 mm/module)
- Nokia X2-01 – Min module size: 3-4 pixels (0.72-0.96 mm/module)
So I guess for screen scanning, Denso Wave’s recommendation of 4 pixels/module will pretty much work everywhere.
I then generated and printed a bunch of codes on a laser printer, and scanned them. The results were surprisingly similar:
- iPhone 4s – Min module size: 3-4 dots (0.25-0.34 mm/module)
- Nexus 7 – Min module size: 4-5 dots (0.34-0.42 mm/module)
- Nokia X2-01 – Min module size: 8-9 dots (0.68-0.76 mm/module)
A test print on an inkjet resulted in far less impressive results. I reckon you need to make the module size around 25% bigger on an inkjet than a laser, perhaps because the inkjet is less crisp.
I have to admit I went a bit nuts with QR Codes. I made a Vcard:
(and while I was at it, I created a new field for ham radio operators: X-CALLSIGN. Why not?). I even encoded some locations in QR Codes.
Just to show you what qrencode can do, here’s a favourite piece of little prose:
Neat stuff. I used RedLaser on a Samsung Galaxy SIII to read the last two. The first one required resizing inside the browser (ctrl-+) to be read off this monitor.
So, what is the minimum suggested megapixel size a cellphone camera should be in order to properly read the “average” QR code on a shelf at the store? About? I do not require a full working knowledge of how the QR Universe works. I get “Bigger is Better” and “Closer & Clearer” is best. But, just going out to buy my first real cellphone and I need it to get the low prices on stuff at the supermarket. So how many megapixels is the least amount I should settle for with this in mind?
This article was from 2013, when the best phone camera I had could do 8 MP. The cheapest Android phones I could find today all had 8 MP or better cameras, so you should be fine