ビジョンの問題を解決する
典型的なビジョンベースのアプリケーションは、次の手順に従います。

外部イメージは、既知のアドレスを持つホストPCメモリバッファに保存する必要があります。 それらは、バッファのアドレスとピッチ(デフォルトは32バイト)、の画像の幅と高さを含むパラメータのあるOpen eVisionイメージオブジェクトにリンクされている必要があります。
詳細については、画像の構成およびメモリの割り当てを参照してください。
分解能と再現性を最適化するには、関心領域が視野の大半を占めるようにし、ターゲットとする検査装置を現実的な照明で可能な限り正確にシミュレートする必要があります。
2つの一連のイメージを作成する必要があります。
- すべての状況(不安定な照明条件や移動の自由など)で欠陥のないオブジェクト(検査プロセスで受け入れられます)。
- 許容できない欠陥(検査プロセスによって拒絶される)を有する物体。
画像を処理するには、eVisionライブラリを開きます:

欠陥を減らすか、または特性(例えば、関心の対象と背景との間のコントラスト)を向上させます。

セグメント化、エッジ検出、パターンマッチングなどの技術を使用して、関心領域を特定します。

EasyGaugeは既知のオブジェクトの正確な測定値を戻します
EasyImageは統計的パラメータを提供します
測定は局所的に実行されるので、幾何学的にオブジェクトの形状を定量化し、欠陥は異常なグレーレベル値に関連する可能性があります。

ROIの機能を比較して品質を評価し、欠陥を検出し、オブジェクトを認識しソートすることにより、良品と不良画像を確実に分離する必要があります。
できない場合は、手順2と3を繰り返して機能のセットを改善してください。

Open eVisionは同じCPU上の(無制限の)マルチスレッドによる同時実行をサポートしていますが、データには一度に1つのスレッドからしかアクセスできません。
独立したタスクは自分のアプリケーションで同時に実行できますが、共有データの各ビットは個別のタスクで管理しなければなりません。
スレッドセーフな開発のルール
データの破損、クラッシュ、プログラムの誤動作を回避するためのルールを下記にまとめました。

基本的な型 |
推奨 |
制約 |
---|---|---|
基本的なピクセル構造 EColor, EPeak, EISH, ELAB, ELCH, ELSH, ELUV, EBW1, EBW8, EBW8Path, EBW16, EBW16Path, EBW32, EC15, EC16, EC24, EC24A, EC24Path, EPath, ERGB, ERGBColor, EVSH, EXYZ, EYIQ, EYSH, EYUV, EDepth8, Edepth16 および EDepth32f |
|
なし |
ピクセル集合クラス EColorLookup, EPseudoColorLookup, EPeakVector, EBW8Vector, EBWHistogramVector, EBW8PathVector, EBW16PathVector, EBW16Vector, EBW32Vector, EC24Vector, EPathVector, EColorVector, EColorLookup および EC24PathVector |
読み取り専用アクセスに制約なし |
シングルインスタンスを複数のスレッドで編集してはいけません。 いずれかのスレッドがインスタンスを変更すると、その他のスレッドからはアクセスできなくなります。 |
画像クラス EImageBW1, EImageBW8, EImageBW16, EImageBW32, EImageC15, EImageC16, EImageC24 および EImageC24A |
読み取り専用アクセスに制約なし |
シングルインスタンスを複数のスレッドで編集してはいけません。 いずれかのスレッドがインスタンスを変更すると、その他のスレッドからはアクセスできなくなります。 |
深度マップクラス |
読み取り専用アクセスに制約なし |
シングルインスタンスを複数のスレッドで編集してはいけません。 いずれかのスレッドがインスタンスを変更すると、その他のスレッドからはアクセスできなくなります。 |
ポイントクラウドクラス |
読み取り専用アクセスに制約なし |
シングルインスタンスを複数のスレッドで編集してはいけません。 いずれかのスレッドがインスタンスを変更すると、その他のスレッドからはアクセスできなくなります。 |
ROIクラス EROIBW1, EROIBW8, EROIBW16, EROIBW32, EROIC15, EROIC16, EROIC24 および EROIC24A |
読み取り専用アクセスに制約なし |
シングルインスタンスを複数のスレッドで編集してはいけません。 いずれかのスレッドがインスタンスを変更すると、その他のスレッドからはアクセスできなくなります。 親画像が同じであれば、ROIを追加または削除したり移動できます。 その結果、さまざまなスレッドが画像の異なる領域に機能し、プロセス中に位置とサイズが変更される可能性があります。 |

ライブラリ |
推奨 |
制約 |
---|---|---|
このクラスの静的なメソッド(ただし、引数に適用されるスレッドルールに反していないという条件で) |
なし |
|
|
なし |
|
EasyMatch, EasyFind, EasyQRCode Library および EasyOCR2 Library |
|
シングルインスタンスは複数のスレッドからアクセスできません。 サーチ領域(読み取り専用)は複数のオブジェクトで共有できます。 |
EasyGaugeおよびShapeサブクラス ゲージングクラス (EPointGauge, ELineGauge, ERectangleGauge, ECircleGauge, EWedgeGauge), EWorldShape およびEFrameShape) |
|
同じ階層内でも、アタッチしたり、異なるスレッドから移動または削除できます。 シングルインスタンスを異なるスレッドで使用してはいけません。 |
基本幾何学クラス (EFrame, EPoint, ECircle, ELine, Erectangle および EWedge) |
|
インスタンスが2つの異なるスレッドで同時に使用されていなければ、複数のスレッドからアクセスできます。 |
測定演算および処理演算のゲージングクラス |
同じ画像上でこれらのゲージによって測定演算が実行される場合にも、異なるスレッドからブロックなしで実行できます。 マルチCPU使用率が最適になります。 |
シングルインスタンスは2つのスレッドから読み込み/変更できません。 |
|
シングルインスタンスは複数のスレッドから読み込み/変更できません。 |
|
EasyOCR, EasyOCV および EasyBarCode |
異なるスレッドからさまざまなインスタンスを作成および使用できます。 |
シングルインスタンスは複数のスレッドからアクセスできません。 |
異なるスレッドから異なるインスタンスを使用できます。 |
|
|
マルチCPU使用率が最適になります。 |
シングルインスタンスは複数のスレッドで使用できません。 シングルマトリックスコードはマルチスレッドで使用できません。 |

特定のコードのタイミングは、次の開始操作と停止操作で簡単に達成されます。
- 開始タイミング:Easy::.StartTiming
- 停止タイミング:Easy::.StopTiming
- クロック解像度:Easy::.TrueTimingResolution

-
Open eVision Studio
ソリューションの作成速度を上げ、自動化します。 関数をテストして適切なパラメータ値を見つけ、プロトタイプアプリケーションにコピーして貼り付ける操作のコードを作成できます。
-
Open eVision 例
Euresysダウンロードエリアは次を含みます。
- サンプルプロジェクト:特定のIDEとOpen eVisionライブラリの使用方法。
- サンプルアプリケーションプログラム:さまざまな組み合わせとアプリケーションでOpen eVisionの関数とライブラリを結合する方法。