MirrorやMLAgentsなど、OpenCV+Unity外のパッケージからOpenCV+Unityを参照する場合、C#スクリプトの先頭に
using OpenCvSharp;
と書くと
The type or namespace name OpenCvSharp could not be found
とか
型または名前空間の名前OpenCvSharpが見つかりませんでした
というエラーが出ることがあります。
エラーの原因
これはC#スクリプトを置いているパッケージにAssembly Definitionファイルがあり、ビルドの範囲がパッケージ内に限定されていることが原因です。
対応方法としては、Assembly Definitionファイルのビルド対象にOpenCV+UnityのAssembly Definitionを作成して追加します。
具体的な手順
まずはOpneCV+UnityパッケージのAssembly Definitionファイルを作成します。OpenCV+Unity/Assets/Scriptsフォルダを開き、プロジェクトウインドウで右クリックしてCreate→Assembly Definitionを選択してください。作成したAssembly Definitionの名前はcvAssemblyにしておきます(任意の名前でOK)
作成したCvAssemblyをクリックしてインスペクタから「Allow unsafe Code」にチェックを入れます。
次に、エラーが出るスクリプトを置いたフォルダ内にあるAssembly Definitionをクリックして、Assembly Definition Referencesの+ボタンをクリックして、先ほど作成したCvAssemblyを指定してください。
外部パッケージのAssembly DefinitionにOpenCV+UnityのAssembly Definitionを追加できました。これで外部パッケージからOpenCV+Unityが見えるようになるので、using OpenCvSharpを書いてもエラーが出なくなるはずです!