OpenCV KAKUUCHI
Module(main)
objdetect
QRcode
猫認識
photo
Pencil Sketch
水彩画エフェクト(Water Color)
video
オプティカルフロー(calcOpticalFlowFarneback)
オプティカルフロー(calcOpticalFlowPyrLK)
オプティカルフロー(Practical:オーラグラフィー)
オプティカルフロー(Practical:グリッチ)
features2d
特徴点描画(単一画像)
Module(contrib)
alphamat
alphamat
dpm
Deformable Part Model
freetype
日本語テキスト
intensity_transform
輝度値補正
ximgproc
高速輪郭抽出
AnisotropicDiffusion
輪郭保管するノイズフィルタ(Reich-Wörgötter)
陰影を考慮した二値化処理
Pei-Lin Normalization
細線化
グラフ構造を考慮した領域分割
EdgeBoxes
xphoto
OilPaint
Gray World White Balance
Simple White Balance
barcode
barcode
Module(cuda)
cudafilters
LaplacianFilter
GaussianFilter
SobelFilter
ScharrFilter
MorphologyFilter
cudaimgproc
bilateralFilter
Canny
HoughLine
HoughCircle
CornerHarris
CornerMinEigenVal
QRcode
Gallery
QRコード1
QRコード2
QRコード3
画像内にQRコードが複数あるとき
what process?
QRコード読み取り
※ QRコード複数読み込み(Multi)はC++のみ
cook code C++
#include <opencv2/opencv.hpp> #include <opencv2/core/utility.hpp> #include <opencv2/objdetect.hpp> int main(int argc, const char* argv[]) { // ./out -src=[image path] -multi cv::String keys = "{src||}""{multi||}"; cv::CommandLineParser parser(argc, argv, keys); cv::String src_path = parser.get<cv::String>("src"); bool is_multi = parser.get<bool>("multi"); cv::Mat src = cv::imread(src_path); cv::QRCodeDetector obj = cv::QRCodeDetector(); if (is_multi){ //探索、文字列化を両方処理 std::vector<std::string > urls; obj.detectAndDecodeMulti(src, urls); for (std::string url : urls){ std::cout << url << std::endl; } } else { //QRコード探索と文字列化を各自で処理 cv::Mat points; obj.detect(src, points); std::string url = obj.decode(src, points); std::cout << url << std::endl; } return 0; }
cook code Python
import cv2 import argparse def single(): parser = argparse.ArgumentParser() parser.add_argument('--src') args = parser.parse_args() src = cv2.imread(args.src) #QRコード読み取り用オブジェクトを生成 obj = cv2.QRCodeDetector() #画像内のQRコードを探索 ret_detect, points = obj.detect(src) #QRコードを文字列化 url, straight_qrcode = obj.decode(src, points) #探索、文字列化を両方処理 url, points, straight_qrcode = obj.detectAndDecode(src) if __name__ == "__main__": single() # python main.py --src [image path] #Pythonでは複数のマーカーは取得できない
Reference
OpenCVdoc - QRCodeDetector
QRコード(公式)
戻る(Back Page)