この前は、パソコンにツールを入れて動作させる環境を整えました。
まだ環境を整えてない人は、下記サイトへ
ではッッ!!!今回はお楽しみの実際に作っていきたいと思います。
作成の流れ
今回は、指定されたファイル(画像ファイル)を画面上に表示したいと思います。
■HALCONを参照設定(HALCONのdllを参照する)
■プラットフォームを『x64』に設定
■表示用のコントロールを配置(hWindowControl) + デザイン作成
■指定された画像ファイルの読み込み/表示
■画像ファイル指定※HALCONは関係ないのでアッサリで
早速やってみましょっっ!!
HALCONを参照設定
まずは、プロジェクトを作成し、ウィンドウ横になる[ツールボックス]を開きます。
ツールボックス内の空いている所で<右クリック>をして[アイテムの選択]選択します。
[ツールボックス アイテムの選択]というウィンドウが開くので、tab[.Net Framework コンポネント]内にある[参照(B)]をクリックしてください。
そして下記ファイルを選択してください。
『(インストールしたフォルダ)\bin\dotnet35\halcondotnet.dll』
自分の場合だと、[C:\Program Files\MVTec\HALCON-20.11-Steady\bin\dotnet35\halcondotnet.dll]でした。
すると、下記項目に自動でチェックが入っていますので、確認したら[OK]を押してください。
これで参照設定は完了です。
プラットフォームを『x64』に設定
参照設定したhalcondotnet.dllは。64bitパソコンでしか動きません。
※最近のパソコンは64bitばかりだと信じています。
ウィンドウ上部に、【Any CPU】と書いてあるコンボボックスをクリックしてください。
『構成マネージャー』を選択してください。
構成マネージャーのウィンドウが開くので、プラットフォームの<Any CPU>のコンボボックスをクリックし、<新規作成…>を選択してください。
「新しいプロジェクト プラットフォーム」というウィンドウが立ち上がるので、
新しいプラットフォーム(P)を『x64』と選択してください。
先ほどのプラットフォームのコンボボックスに『x64』が追加されているので、選択してください。
※画像ではビルドにチェックが外れていますが、入れてください。
表示用のコントロールを配置(hWindowControl)
参照設定が完了していると、ツールボックス内に[hWindowControl]が追加されています。
これをドラッグアンドドロップ or ダブルクリックして、デザインしているフォームに配置します。
黒いコントロールが追加されました。これが[hWindowControl]です。
やりたい事としては、ファイル読み込みをして表示なので、横にボタンをつけてとりあえずデザインは完成です。
画像読込と画像表示
まずは、usingを追加します。halcondotnet.dllのNamespace名は、『HalconDotNet』です。
これで、Halconの関数を使いますよ~って定義でしました。
とりあえず、フォームロード時に、ファイル読み込みをして、画像を表示してみます。
流れとしては下記の通りです。
- コントロール(hWindowControl)のIDを取得する
- 画像を読み込み、画像のデータを取得する。
- コントロールに表示する
private void Form1_Load(object sender, EventArgs e) { HTuple hwin1 = hWindowControl1.HalconWindow; HOperatorSet.ReadImage(out HObject img, @"(ファイルのパス)"); HOperatorSet.DispImage(img, hwin1); }
[HOperatorSet]という静的メンバー(クラス)を使います。
(ファイルのパス)には画像ファイルのパスを入れてください。
画像ファイルの指定と表示
これは、「画像読込+表示」ボタンを押したら、ファイルダイアログを使って、ユーザーに画像を選択してもらい、選択してもらったパスをフォームロードと同じ流れで処理します。
private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.FileName = ""; ofd.InitialDirectory = @"C:\"; ofd.Filter = "画像ファイル(*.png;*.jpg)|*.png;*.jpg"; ofd.Title = "開くファイルを選択してください"; if (ofd.ShowDialog() == DialogResult.OK) { HTuple hwin1 = hWindowControl1.HalconWindow; HOperatorSet.ReadImage(out HObject img, ofd.FileName); HOperatorSet.DispImage(img, hwin1); } }
実際にできたので動作させてみると下記のような結果になりました。
読み込んだ画像を表示できています。ただサイズがあってませんね。。。これは次回にしましょう!
まとめ
今回はHALCONを使って、画像読込から表示までを行いました。
DLLを使用しているので、コード量としては少ないです。
ただ参照設定の追加や、プラットフォームの設定を忘れずに行ってください。
嬉しい事に「画像処理の第1歩」を踏み込む事が出来ました。
頑張りたいと思いますっっ!!!!!!!!
業務でプログラミング(C#/VB/Python)を作っている。
挫折を何回も繰り返し、幾度の壁を乗り越えてきた。
乗り越えてきた事を忘れないように記録に残す。
同じ思いをしている人への情報提供になれたらと思う。
基本は初心者に向けたプログラムの情報を提供する。
コメント