検査レシピ=処理/検査ステップの縦リスト(配線なし)。yfoxlib(yfoximg/yfoxbase)使用。 - ビジュアル・パイプライン(カード+適用後サムネイル+緑/赤 合否) - テンプレート/対話式ウィザードでレシピ生成(CTaskDialog) - パラメータのスライダー・ライブ調整 - レシピ保存/読込(*.itr) + 最近使ったファイル(MRU) - 検査範囲(ROI)を複数マウス指定(ドラッグ追加/右クリック削除) - カードのドラッグ並べ替え - 判定結果画像の保存 + 検査ログCSV(項目拡張) - 処理6種+検査3種(明るさ/白画素率/塊の数) - /selftest(実行+レシピ往復+結果画像+複数ROI塊カウント検証)、/demo Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
61 lines
2.1 KiB
C++
61 lines
2.1 KiB
C++
#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
|