#include <QTimer>
#include <QDebug>
#include <QThread>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "zbar.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->mTimer = new QTimer(this);
connect(this->mTimer, &QTimer::timeout, this, [this]
{
cv::Mat matrix;
this->mCap >> matrix;
if(matrix.data == nullptr)
return ;
QImage cvImg = QImage((uchar*)matrix.data, matrix.size().width, matrix.size().height, matrix.step, QImage::Format_RGB888);//0xffRRGGBB (24bit)
auto swapedImage = cvImg.rgbSwapped();
QPixmap image(QPixmap::fromImage(swapedImage));
ui->label->setPixmap(image);
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked() noexcept
{
qDebug() << this->mCap.open(0);
this->mTimer->start(50);
}
void sharpen(const cv::Mat &image, cv::Mat &result);
void MainWindow::on_btnQRRead_clicked()
{
cv::Mat matrix;
#if 0 //static
matrix = cv::imread("C:/YourFullPath/YourFileName.png"); // or mTemp
#else //camera
this->mCap >> matrix;
#endif
if(matrix.data == nullptr)
return ;
QStringList resultList;
zbar::ImageScanner scanner;
scanner.set_config(zbar::ZBAR_QRCODE, zbar::ZBAR_CFG_ENABLE , 1);
cv::Mat imGray;
cv::cvtColor(matrix, imGray, cv::COLOR_BGR2GRAY);
zbar::Image image(imGray.cols, imGray.rows, "Y800", (uchar *)imGray.data, imGray.cols * imGray.rows);
qDebug() << scanner.scan(image);
for(auto symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol)
{
QString result;
result = QString::fromStdString(symbol->get_data());
resultList.push_back(result);
}
cv::imshow("test", imGray);
qDebug() << resultList;
}
네이버 클라우드
소중한 폰 사진을 안전하게 보관하고, 함께보기로 가족, 친구들과 손쉽게 공유해 보세요!
cloud.naver.com
소스와 lib 묶음은 해당링크 참조
os : windows 10 - 64bit
compile kit : mingw32 bit / qt 5.11.3 /zbar lib /opencv 사용
# qr 데이터 사용시 주의 사항
# qr의 회전 및 좌우반전에 인식률이 크게 영향을받음