Qt + OpenCVを使用して、回転角を使用した形状マッチング演算子とそのデモソフトウェアを作成しました。演算子の原理は、輪郭エッジの形状マッチングに基づいています。
1.形状マッチング
1.形状マッチングの原則は、インドの兄弟のオープンソースプロジェクトであるEdge Based TemplateMatchinghttps://www.codeproject.com/Articles/99457/Edge-Based-Template-Matchingを参照でき
ます。
ただし、エッジベースのテンプレートマッチングプロジェクト自体は回転角とピラミッドグレーディングをサポートしていないため、これらの関数を自分で実装する必要があります。
2. halconの作者が書いた推奨読書本「マシンビジョンアルゴリズムとアプリケーション(第2版)」、第3.11章、テンプレートマッチング
2.この記事のデモソフトウェアの主な機能:(商用の画像処理ライブラリを使用していませんが、純粋なQt + OpenCVを使用しています)
1.形状マッチング
2.ピラミッド
3.最大オーバーラップ率、貪欲度
4.回転角
5.マッチスコア
6、ズームをサポートしていません
7.テンプレートファイルの読み取りと書き込み
8. ROIフレーム選択機能、人間とコンピューターの相互作用
3.ヘッダーファイルの一部:
テンプレートを作成
し、学習ハルコン演算子create_shape_modelを比較してオブジェクトを検索し、学習ハルコン演算子find_shape_modelを比較します。
class VISIONCORE_EXPORT CShapeMatch
{
public:
CShapeMatch();
virtual ~CShapeMatch();
public:
void createShapeModel(const cv::Mat &imageModel, int numLevels, double angleStart, double angleExtent, double angleStep,
double minContrast, double maxContrast, CShapeModelID &modelID);
void findShapeModel(const cv::Mat &imageSearch, const CShapeModelID &modelID, double angleStart, double angleExtent, double minScore, int numMatches, double maxOverlap, int numLevels,
double greediness, std::vector<int> &vtRow, std::vector<int> &vtColumn, std::vector<double> &vtAngle, std::vector<double> &vtScore);
4.デモソフトウェアのスクリーンショット:(商用画像処理ライブラリを使用していませんが、純粋なQt + OpenCVを使用しています)
---
拡張読書
https://github.com/meiqua/shape_based_matching
https://github.com/Layjins/A-MNS_TemplateMatching
https://github.com/datawhalechina/team-learning-cv