【VS(C#)+OpenCV(C++)】画像ファイルから画像表示してみる
- はじめに
- 環境
- 構成図
- 手順
- 1. C#コンソールアプリを作成
- 2. C++/CLI(OpenCVラッパー)を作成
- 3. OpenCV C++版をダウンロード
- 4. ソリューションの構成とプラットフォームを変更
- 5. C++/CLI(OpenCVラッパー)プロジェクトの編集
- 6. C#コンソールアプリプロジェクトの編集
- おわりに
はじめに
Visual Studio Community 2019でC#のコンソールプロジェクトからOpenCV C++版を使って画像ファイルから読み込んだ画像をウィンドウで表示したいと思います。
もし、Python+OpenCVで画像をウィンドウで表示させたい場合はこの記事に書いてますので良かったらこちらもご覧ください。
madai21.hatenablog.com
環境
以下をすべて用意していることを前提とします。
- Visual Studio Community 2019
.NETデスクトップ開発とC++によるデスクトップ開発の機能を使用します。
もし、インストール時にこれらの機能を入れていなければVisual Studio InstallerからVisual Studio Community 2019の変更でこれらの機能をインストールしておいて下さい。
構成図
こんなイメージです。
手順
1. C#コンソールアプリを作成
VisualStudio2019を起動し、新しいプロジェクトの作成からC# - コンソールアプリケーションを選択して次へを押します。
プロジェクト名はOpenCVConsoleAppとしましょう。
次へを押します。
作成を押します。
2. C++/CLI(OpenCVラッパー)を作成
ソリューションを右クリックし、追加→新しいプロジェクトを選択します。
C++ - CLRクラスライブラリ(.NET)を選択して次へを押します。
プロジェクト名はOpenCVWrapperとしましょう。
作成を押します。
3. OpenCV C++版をダウンロード
以下の場所からWindowsを選んでダウンロードします。
opencv.org
今回は4.5.2をダウンロードします。
opencv-4.5.2-vc14_vc15.exeがダウンロードされてると思うので起動します。
解凍先としてどこでもいいですが、今回はCドライブ直下とします。
Extract to:にC:\を入力し、Extractを押します。
これでC:\opencv以下にopenCV関連のファイルができました。
次はOpenCVをいつでもVisualStudioが使えるように環境変数のPathにOpenCVのパスを追加しましょう。
Windowsボタン→環境変数を入力しシステム環境変数の編集を選択します。
詳細設定タブの環境変数を押します。
システム環境変数のPathを選択し、編集を押します。
新規ボタンを押すと入力できるので
C:\opencv\build\x64\vc15\bin
と入力します。
OKボタンを順次押して行ってシステム環境変数の設定を終了しましょう。
4. ソリューションの構成とプラットフォームを変更
Debugとx64に変更しておきます。
※もしも、設定が表示されていない場合。
ツールバー右端のボタンからソリューション構成とソリューションプラットフォームを選択しておくと表示されると思います。
5. C++/CLI(OpenCVラッパー)プロジェクトの編集
OpenCVWrapperプロジェクトを右クリックし、プロパティを選択します。
C/C++ - 全般を選び、追加のインクルードディレクトリにC:\opencv\build\includeを入力します。
次にリンカ - 全般を選び、追加のライブラリディレクトリにC:\opencv\build\x64\vc15\libを入力します。
最後にリンカ - 入力を選び、追加の依存ファイルにopencv_world452d.libを入力し適用ボタンを押します。
そのあとOKボタンを押して設定画面を閉じましょう。
OpenCVWrapper.hを開いて以下の内容に編集します。
#pragma once #include <opencv2/opencv.hpp> #include <msclr/marshal_cppstd.h> using namespace System; using namespace msclr::interop; namespace OpenCVWrapper { public ref class OpenCVWrapperCls { public: static void ShowImgFile(System::String^ filePath) { auto mat = cv::imread(marshal_as<std::string>(filePath)); cv::imshow("Show Image File Window", mat); while (1) { auto key = cv::waitKey(1); if (key == 27) { break; } } cv::destroyAllWindows(); } }; }
6. C#コンソールアプリプロジェクトの編集
OpenCVConsoleAppプロジェクトを右クリックし、追加→プロジェクト参照を選択します。
OpenCVWrapperをチェックし、OKボタンを押します。
Program.csを開いて以下の内容に編集します。
using System; namespace OpenCVConsoleApp { class Program { static void Main(string[] args) { OpenCVWrapper.OpenCVWrapperCls.ShowImgFile("madai.png"); } } }
F5を押してビルドと実行を行います。
この画面が出ればOKです。