Giter Site home page Giter Site logo

opencvforae's Introduction

OpenCVforAE

adobe after effectsのエフェクトプラグインでオープンソースの画像 ライブラリOpenCVを使う為のスケルトンプロジェクトとライブラリです。
なるべく楽にエフェクトプラグインが作れるように工夫してあります。
スケルトンプロジェクトのOpenCVSkeltonを使えばだれでもプラグインが作れます。

Description

  • Visual studio 2017 Community 2017 C++
  • OpenCV v3.4.6 https://github.com/opencv/opencv/releases
  • Adobe After Effects CC 15.0 Win SDK
  • Windows10(64bit)
  • Adobe after effects CS6 orCC2018 自分が主にデバッグに使用しているのはCS6ですが、SDKはCC2018で最終的にCC2018での動作確認をしています。

OpenCVのバージョンはネットに資料が多そうなOpenCV3にしていますが、プロジェクトの設定を変えれば他のバージョンでも動くと思います。OpenCV自体は自分自身が触り始めたばかりなのでなんともいえません。

このライブラリはサンプルプロジェクトOpenCVSkeltonとライブラリで構成されています。 ファイル構成は以下の通りです。

\OPENCVFORAE
│  OpenCVforAE.sln //visual studioソリューションファイル
├─Lib
│      CAE.h       //コーディングを楽にするためのクラス
│      CAEcv.h     //OpenCVをプラグイン内で使う為の関数が入ったクラス
│      FsUtils.h   //F's Pluginsから持ってきたマクロ等。
│      
├─OpenCVSkelton
│  │  OpenCVSkelton.cpp      //プラグインのUI部品登録等、記述に必要なもの
│  │  OpenCVSkelton.h        //プラグイン固有のものが定義されるもの
│  │  OpenCVSkeltonPiPL.r    //PiPLリソース。基本的に書き換え不要
│  │  OpenCVSkelton_Entry.h  //OpenCVSkelton.cppで使う変更不要なコードをまとめたもの
│  │  OpenCVSkelton_Target.h //プラグイン固有のものが定義されるものその2
│  │  
│  └─Win
│      │  OpenCVSkelton.vcxproj
│      │  OpenCVSkelton.vcxproj.filters
│      │  OpenCVSkelton.vcxproj.user
│      │  OpenCVSkeltonPiPL.aps
│      │  OpenCVSkeltonPiPL.rc
├─outPlugins
└─utils
        AE_Effects_Version.exe    // バージョン定数を計算するアプリ
        AE_out_flags.exe          // out_flagsを計算するアプリ
        CPP_ProjectRename.exe     // C++のソース内の文字を置換するアプリ
                                  // OpenCVSkeltoをリネームするときに使う

utilsに入っているアプリは、バージョン及びout_flagsの定数はsdkではマクロで実装していますが、 PiPLリソースのコンパイルの都合で記述がマクロで処理できなく結局自前で計算する必要があるので作ったものです。
計算するならマクロ展開やめて一か所書き換えればいいようにしています。

Sample plugin

名前 内容
OpenCVSkelton プラグインのスケルトン UIパーツの設定や基本的な事
filter フィルターサンプル cv::dilate/cv::GaussianBlurを使ったサンプル

Usage

OpenCVv3.4.6をインストールしてください。
"C:\opencv"へインストールすれば、プロジェクトの書き換えの必要はありません。
PATHに"C:\opencv\build\x64\vc15\bin"を追加しておくと楽です。

oepncv自体のインストールは特に問題ないと思います。大変なのはVisualStudioの設定です。これは別に書きます

このプロジェクトファイル自身はSDKフォルダ内のExampleフォルダ内へ配置してください。
こんな感じです。

\ADOBESDK\ADOBE AFTER EFFECTS CC 15.0 WIN SDK
├─Examples
│  ├─AEGP
│  ├─Effect
│  ├─F's PluginsProjects
│  ├─Headers
│  ├─OpenCVforAE
│  │  ├─Lib
│  │  ├─OpenCVSkelton
│  │  └─utils
│  ├─Resources
│  ├─Template
│  ├─UI
│  └─Util

プラットホームはx64のみになります。

デバッグ時はdll出力先をAfter Effectsのplug-insフォルダへ設定すれば、デバッガが使用できます。

重要なのはプロジェクトのプロパティでincludeするヘッダーやライブラリの設定です。
プロジェクトのプロパティで注意するところは以下の点

  • 構成プロパティ/VC++プロパティ/VC++ディレクトリ/インクルードディレクトリ
    $(VC_IncludePath);$(WindowsSDK_IncludePath);C:\opencv\build\include
  • 構成プロパティ/VC++プロパティ/VC++ディレクトリ/ライブラリディレクトリ
    $(LibraryPath);C:\opencv\build\x64\vc15\lib
  • C/C++/全般/追加のインクルードディレクトリ ......\Headers;......\Headers\SP;......\Resources;......\Util;....\Lib;C:\opencv\build\include
  • C/C++/コード生成/構造体メンバーのアライメント
    8バイト(/Zp8) もしくは 16バイト(/Zp16)
  • リンカー/全般/追加のライブラリディレクトリ
    C:\opencv\build\x64\vc15\lib
  • リンカー/入力/追加の依存ファイル
    %(AdditionalDependencies);opencv_world346d.lib //デバッグ時
    %(AdditionalDependencies);opencv_world346.lib //リリース時

結構はまります。絶対あってるのにopencv_world346.libopencv_world346.libがないとエラーが出たら、visual studioを再起動させるか、いったん設定から外して再度登録すると何故かうまくいく時があります。

新しいプラグインを作るときは、OpenCVSkeltonをvisual studioのテンプレートに登録するか、utilsフォルダにあるCPP_ProjectRename.exeを使ってリネームします。

License

This software is released under the MIT License, see LICENSE.txt.

Authors

bry-ful(Hiroshi Furuhashi) http://bryful.yuzu.bz
twitter:bryful
[email protected]

References

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.