よく分からないけど動いた!( 環境変数パスは設定していない )
- https://sourceforge.net/projects/opencvlibrary/files/
から OpenCV をダウンロード。( opencv-win をダウンロードした ) - ダウンロードした .exe を展開
- C++ のプロジェクト内へ
include と ( x64/vc14 に格納してある ) lib をコピペ。
include ではなく、その中の opencv2 をコピペすれば、
6 .で ./include ではなく、 ./ というファイルパス指定になる。 - C# のプロジェクト内にある bin/x64/Debug に
( x64/vc14/bin に格納しある )
opencv_world330.dll
opencv_world330d.dll
をコピペ。
bin フォルダと同階層にコピーし、プロジェクトに追加して
「新しい場合はコピーする」を選択すれば debug にコピーせずすむ。 - ソリューションエクスプローラから
C++ の [ プロジェクト ] を右クリック。 - 左メニューから「 C/C++ 」を選択し、
[ 追加のインクルードディレクトリ ] に
./include/
を追加。 - プロジェクトのソリューションエクスプローラから
[ 全てのファイルを表示 ] をクリック。 - include フォルダと ( include フォルダは含めなくともいいかも。6.で追加してるし )
lib 内の opencv_world330d.lib と opencv_world330.lib を
右クリックし、
[ プロジェクトに含める ] を選択する。(※ C# の Form.cs と同ディレクトリ ← ? ) - 後はソースを書く。
C++側ソース
#pragma once
#if _DEBUG
#pragma comment(lib, "opencv_world330d.lib")
#else
#pragma comment(lib, "opencv_world330.lib")
#endif
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace System;
namespace testManaged {
public ref class Class1
{
public :
void test( )
{
cv::Mat redImg(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));
cv::imshow("red", redImg);
}
};
}
test( ) を呼ぶと、
赤いウィンドウが開く。
C#側
class1 = new testManagedCLI.Class1( );
class1.test( );
エラー Memo
#include <opencv2/opencv.hpp>で開かないとエラー。開くのに。
→インクルードのプラットフォームを x84 だったので、x64 にした。
[ opencv_world343d.lib ] が開けないと出た。
→vc15 を使っていたので、vc14 に変更。vc14 が visual studio 2015.2017 が vc15 。
opencv_worldxxx.lib が見つかりません。
→ 8.をとばしていた。
キャプチャ↓ ( クリックで拡大 )
1.
3. 4.
6.
7.
※
コピペしたりなんだりしているが、環境変数へパスを追加すれば
面倒くさいことはしないで済むと思う。
こちらから。
http://imagingsolution.net/program/opencv/opencv_how_to_use_staticlib/
http://www.arubeh.com/archives/1102
http://www.buildinsider.net/small/opencv/003
http://www.buildinsider.net/small/opencv/004
http://harapeko-kid.hungry.jp/opencv3-1-install
以上。