Initial commit: ノーコード画像検査アプリ (MVP + 追加機能一式)
検査レシピ=処理/検査ステップの縦リスト(配線なし)。yfoxlib(yfoximg/yfoxbase)使用。 - ビジュアル・パイプライン(カード+適用後サムネイル+緑/赤 合否) - テンプレート/対話式ウィザードでレシピ生成(CTaskDialog) - パラメータのスライダー・ライブ調整 - レシピ保存/読込(*.itr) + 最近使ったファイル(MRU) - 検査範囲(ROI)を複数マウス指定(ドラッグ追加/右クリック削除) - カードのドラッグ並べ替え - 判定結果画像の保存 + 検査ログCSV(項目拡張) - 処理6種+検査3種(明るさ/白画素率/塊の数) - /selftest(実行+レシピ往復+結果画像+複数ROI塊カウント検証)、/demo Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#pragma once
|
||||
//
|
||||
// InspectEngine.h - レシピを yfoximg で実行する検査エンジン。
|
||||
// ここが唯一 yfoximg(CImgProcessing / CDiBitmap)に依存する層。
|
||||
// ImgProcessing.h は .cpp 側だけで include し、UI への漏れを防ぐ(前方宣言でラップ)。
|
||||
//
|
||||
#include "Recipe.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class CDiBitmap; // 前方宣言(ヘッダに yfoximg を持ち込まない)
|
||||
|
||||
namespace core {
|
||||
|
||||
// 検査全体の結果。
|
||||
struct RunResult
|
||||
{
|
||||
bool hasInspect = false; // 検査ステップが1つ以上あった
|
||||
bool pass = false; // 総合 PASS/FAIL
|
||||
bool error = false; // 実行時エラーあり
|
||||
CString message; // サマリ文
|
||||
};
|
||||
|
||||
// レシピ実行器。作業画像(CDiBitmap)と、各ステップ適用後のスナップショットを保持。
|
||||
class InspectEngine
|
||||
{
|
||||
public:
|
||||
InspectEngine();
|
||||
~InspectEngine();
|
||||
|
||||
bool LoadImage(LPCWSTR path);
|
||||
bool HasImage() const;
|
||||
|
||||
// レシピを全ステップ実行。各 Step::result を更新し、ステップごとの
|
||||
// スナップショット画像(サムネイル描画用)を内部に保持する。
|
||||
RunResult Run(Recipe& recipe);
|
||||
|
||||
// 判定結果を注釈画像(最終画像+ROI枠+PASS/FAIL+検査要約)として保存。
|
||||
bool SaveResultImage(LPCWSTR path, const Recipe& recipe, const RunResult& rr);
|
||||
|
||||
// 原画像を DC にアスペクト維持で描画。実際に描いた矩形(オーバーレイ用)を返す。
|
||||
CRect DrawSource(CDC* pDC, const CRect& rc);
|
||||
// ステップ i 適用後のスナップショットを描画。実際に描いた矩形を返す(無ければ空)。
|
||||
CRect DrawShot(CDC* pDC, const CRect& rc, int stepIndex);
|
||||
bool HasShot(int stepIndex) const;
|
||||
|
||||
int SrcWidth() const;
|
||||
int SrcHeight() const;
|
||||
int SrcBpp() const;
|
||||
int WorkWidth() const;
|
||||
int WorkHeight() const;
|
||||
int WorkBpp() const;
|
||||
|
||||
private:
|
||||
std::unique_ptr<CDiBitmap> m_src; // 読み込んだ原画像
|
||||
std::unique_ptr<CDiBitmap> m_work; // 作業画像(処理を積み上げる)
|
||||
std::vector<std::shared_ptr<CDiBitmap>> m_shots; // steps[i] 適用後の画像
|
||||
};
|
||||
|
||||
} // namespace core
|
||||
Reference in New Issue
Block a user