rOpenSci | Scanning QR codes in R

Scanning QR codes in R

The latest version of the opencv R package can detect and decode QR codes!

# Install latest opencv
install.packages("opencv", repos = "")

There are two ways of using this: the ocv_qr_detect function tries to find the QR in an image file. It returns either a text string or NULL (if no QR code was found in the image):

img <-  opencv::ocv_read('')

Alternatively if your laptop has a camera, you can use R as a true QR code scanner! The qr_scanner function starts the camera device and filters the video stream through the above ocv_qr_detect until a QR code has been detected.

# This requires a camera
txt <- opencv::qr_scanner()

By default, both ocv_qr_detect and qr_scanner return the text value of the decoded QR code. But both functions also have an option draw = TRUE which will instead return an annotated image with the position and value of the QR drawn into the image, and qr text value as an attribute.

🔗 Generating QR codes in R

There exists another package on CRAN called qrcode (currently maintained by Thierry Onkelinx) which can generate most types of QR codes using R graphics, which is super cool.

We can combine the two packages to roundtrip text to QR codes in R:

## generate a qr code image
plot(qrcode::qr_code("This is a test!"))

# Verify that we can read it:
## [1] "This is a test!"

So this provides a quick way to exchange small blobs of information between computers running R, without the need for any network connection.