ページ「Xamarin.Mac/NSApplicationのサブクラスを使う」と「Intel Image Processing Library」の間の差分

提供: MonoBook
< Xamarin.Mac(ページ間の差分)
ナビゲーションに移動 検索に移動
(153.174.184.145 (トーク) による版 6178 を取り消し)
 
(ページの作成:「'''Intel Image Processing Library'''とは、インテルCPUの圧倒的優位性を世に知らしめるために開発された画像処理ライブラリで...」)
 
1行目: 1行目:
[[MonoMac]]および[[Xamarin.Mac]][[AppKit]]のNSApplicationのサブクラスを利用したい場面もあることだろう。多くの場合はNSApplicationDelegateで事足りるだろうが、稀にすべてのイベントをトラップしたい場面などではNSApplicationのサブクラスを作る必要がある。
+
'''Intel Image Processing Library'''とは、[[インテル]][[CPU]]の圧倒的優位性を世に知らしめるために開発された画像処理ライブラリである。
 +
後に[[OpenCV]]として[[BSDライセンス]]のもとで[[オープンソース]]化され、インテルのCPUだけでなく[[NVIDIA]]の[[CUDA]]などもサポートされるようになった。
  
==実装1==
+
==概要==
===NSApplicationのサブクラスを作る===
+
現在ではすべて一括りで「[[OpenCV]]」であるが、日常会話としては高レベル層はOpenCV、低レベル層はIPLを指すと使い分けている人も多い。
Register属性で指定した名前は後ほどInfo.plistで利用される。凄く重要。クラス名と同じにしておくと紛らわしくないと思われる。
 
  
NSApplicationがデフォルトコンストラクタを持たない関係でサブクラスにもコンストラクタがないと[[コンパイル]]が通らないが、[[デバッガ]]で追ってみた限りでは呼ばれている気配はない。そのためAwakeFromNibメソッドをオーバーライドして初期化している。これでいいのかは知らん。
+
==ダウンロード==
<source lang="csharp">
+
2015年時点では単体で[[ダウンロード]]配布されているのは、1999年にリリースされた[[QNX]]、[[VxWorks]]、[[Windows CE]]向けの古いバージョンのみとなっている<ref>https://downloadcenter.intel.com/ja/search?keyword=Image+Processing+Library</ref>。昔ながらの低レベルなIPLだけ欲しい場合は[[OpenCV]]の[[ソースコード]]からぶっこ抜くのが手っ取り早い。
    using System;
 
  
    using Foundation;
+
==使い方==
    using AppKit;
+
基本的な使い方は20世紀からあまり変わっていないので[[ググれ]]ば情報はでてくるが、[[インターネット]]上の古い情報は次々と消えているようなので何かしらの保全策が求められる。
 
+
基軸となる構造体が「IplImage」なのは今も昔も変わっていない<ref>https://github.com/Itseez/opencv/blob/master/modules/core/include/opencv2/core/types_c.h</ref>
    [Register("App")]
 
    public class App : NSApplication
 
    {
 
        public App(IntPtr handle) : base(handle) {}
 
 
 
        public App(NSCoder coder) : base(coder) {}
 
 
 
        /// <summary>
 
        /// 初期化はAwakeFromNibのタイミングでいいのか?
 
        /// 調査中
 
        /// </summary>
 
        public override void AwakeFromNib()
 
        {
 
            base.AwakeFromNib();
 
            this.Delegate = new AppDelegate();
 
        }
 
 
 
        /// <summary>
 
        /// こいつをオーバーライドすればほぼ全てのイベントが取れる
 
        /// </summary>
 
        /// <param name="theEvent">The event.</param>
 
        public override void SendEvent(NSEvent theEvent)
 
        {
 
            base.SendEvent(theEvent);
 
        }
 
    }
 
</source>
 
 
 
===Info.plistに「Principal class」を設定する===
 
Info.plistを開き、Xamarin Studio下部の「ソース」タブを選択する。Info.plistがない場合はファイルを追加する(新規追加ダイアログでは「Application Manifest」という名称になっているはず)。
 
 
 
プロパティの一覧が列挙されるので、プロパティ「Principal class」に「String」型で前述のRegister属性で付けた名前を入力する(この例であれば「App」)。プロパティ「Principal class」がない場合はリスト下部の「Add new entry」を選べば新しい行が追加される。
 
 
 
===エントリポイントを書き換える===
 
Xamarin Studioで「空のプロジェクト」を作ると初期値でこんな感じになっている。
 
<source lang="csharp">
 
    static class MainClass
 
    {
 
        static void Main(string[] args)
 
        {
 
            NSApplication.Init();
 
 
 
            var application = NSApplication.SharedApplication;
 
            application.Delegate = new AppDelegate();
 
            application.Run();
 
        }
 
    }
 
</source>
 
 
 
 
 
これを以下のように書き換える。なお「空のプロジェクト」ではなく「Cocoa」を選ぶと最初からこうなっている。
 
<source lang="csharp">
 
    using System;
 
    using AppKit;
 
 
 
    static class MainClass
 
    {
 
        static void Main(string[] args)
 
        {
 
            NSApplication.Init();
 
            NSApplication.Main(args);
 
        }
 
    }
 
</source>
 
  
 
==関連項目==
 
==関連項目==
 +
*[[OpenCV]]
  
 
==参考文献==
 
==参考文献==
83行目: 19行目:
  
 
{{stub}}
 
{{stub}}
 
[[category:Xamain.Mac]]
 
[[category:MonoMac]]
 

2015年4月21日 (火) 02:25時点における版

Intel Image Processing Libraryとは、インテルCPUの圧倒的優位性を世に知らしめるために開発された画像処理ライブラリである。 後にOpenCVとしてBSDライセンスのもとでオープンソース化され、インテルのCPUだけでなくNVIDIACUDAなどもサポートされるようになった。

概要

現在ではすべて一括りで「OpenCV」であるが、日常会話としては高レベル層はOpenCV、低レベル層はIPLを指すと使い分けている人も多い。

ダウンロード

2015年時点では単体でダウンロード配布されているのは、1999年にリリースされたQNXVxWorksWindows CE向けの古いバージョンのみとなっている[1]。昔ながらの低レベルなIPLだけ欲しい場合はOpenCVソースコードからぶっこ抜くのが手っ取り早い。

使い方

基本的な使い方は20世紀からあまり変わっていないのでググれば情報はでてくるが、インターネット上の古い情報は次々と消えているようなので何かしらの保全策が求められる。 基軸となる構造体が「IplImage」なのは今も昔も変わっていない[2]

関連項目

参考文献