需求
1.開啟圖片;
2.矯正識別角點;
3.opencv攝像頭操作子執行緒處理;
4.支援設定棋盤格的行列角點數;
深入研究影像拼接細分支演算法,產出的效果檢視工具,驗證演算法單步思路。
《專案實戰:Qt+Opencv相機標定工具v1.3.0(支援開啟攝像頭、影片檔案和網路地址,支援標定過程檢視、刪除和動態評價誤差率,支援追加標定等等)》
《OpenCV開發筆記(〇):使用mingw530_32編譯openCV3.4.1原始碼,搭建Qt5.9.3的openCV開發環境》
《OpenCV開發筆記(三):OpenCV影像的概念和基本操作》
《OpenCV開發筆記(四):OpenCV圖片和影片資料的讀取與儲存》
《OpenCV開發筆記(六):OpenCV基礎資料結構、顏色轉換函式和顏色空間》
《OpenCV開發筆記(四十六):紅胖子8分鐘帶你深入瞭解仿射變化(圖文並茂+淺顯易懂+程式原始碼)》
《OpenCV開發筆記(七十六):相機標定(一):識別棋盤並繪製角點》
《OpenCV開發筆記(七十七):相機標定(二):透過棋盤標定計算相機內參矩陣矯正畸變攝像頭影像》
#ifndef AFFINEMANAGER_H
#define AFFINEMANAGER_H
// opencv
#include "opencv/highgui.h"
#include "opencv/cxcore.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/xphoto.hpp"
#include "opencv2/dnn/dnn.hpp"
// opencv_contrib
#include <opencv2/xphoto.hpp>
#include <opencv2/ximgproc.hpp>
#include <opencv2/calib3d.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include "cvui.h"
#include <QImage>
#include <QTimer>
class AffineManager: public QObject
{
Q_OBJECT
public:
explicit AffineManager(QObject *parent = 0);
~AffineManager();
public slots:
void testOpencvEnv(); // 測試環境
public:
cv::Point2f getLeftBottomOffsetPoint() const;
cv::Point2f getCenterTopOffsetPoint() const;
cv::Point2f getRightBottomOffsetPoint() const;
int getChessboardColCornerCount() const;
int getChessboardRowCornerCount() const;
public:
void setLeftBottomOffsetPoint(const cv::Point2f &offsetPoint);
void setRightBottomOffsetPoint(const cv::Point2f &offsetPoint);
void setCenterTopOffsetPoint(const cv::Point2f &offsetPoint);
void setChessboardColCornerCount(int chessboardColCornerCount);
void setChessboardRowCornerCount(int chessboardRowCornerCount);
signals:
void signal_srcImage(QImage image);
void signal_srcImage(cv::Mat mat);
void signal_resultImage(QImage image);
void signal_resultImage(cv::Mat mat);
void signal_inited(bool result);
public slots:
void slot_openImage(QString filePath);
void slot_initImage();
void slot_affineImage();
protected:
void initControl();
protected:
bool findChessboard(int rowCornerCount, int colCornerCount, cv::Mat &mat, std::vector<cv::Point2f> &vectorPoint2fCorners)