1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

小さいQRコードを検出する

Posted at

この記事は以下のサイトを参考にしたものです.
https://zenn.dev/ijiwarunahello/articles/e1d26d393a02ec

opencvでQRコードを検出する

通常の方法では,以下のコードで,QRコードを検出する.

import cv2
import pyzbar.pyzbar

filename = "/path/to/image.png"

img = cv2.imread(filename)
res = pyzbar.pyzbar.decode(img)
print(res)

ただし,この方法では小さいQRコードが検出されないため,別の方法を考える必要がある.

WeChatQRCodeで小さいQRコードを検出する

小さいQRコードを検出するにはWeChatQRCodeを使うのが良い.
WeChatQRCodeはopencv-contrib-pythonをインストールしておく必要がある.

$ pip install opencv-contrib-python

また,以下のサイトから,wechat qrcodeを動かすために必要なファイルをダウンロードしておく必要がある.
https://github.com/WeChatCV/opencv_3rdparty/tree/wechat_qrcode

以下の4つのファイル.

  • detect.caffemodel
  • detect.prototxt
  • sr.caffemodel
  • sr.prototxt
$ cd /path/to/store/files
$ curl -OL https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/detect.caffemodel
$ curl -OL https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/detect.prototxt
$ curl -OL https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/sr.caffemodel
$ curl -OL https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/sr.prototxt

以下のコードで,QRコードを検出する.

import cv2

filename = "/path/to/image.png"

img = cv2.imread(filename)
detector = cv2.wechat_qrcode.WeChatQRCode("/path/to/detect.prototxt", "/path/to/detect.caffemodel", "/path/to/sr.prototxt", "/path/to/sr.caffemodel")
img = cv2.cvtColor(cv2.COLOR_BGR2RGB)
data, points = detector.detectAndDecode(img)
print(data)
print(points) # QRコードの4隅の座標が格納されている
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?