FrameworkC#のOpenCVライブラリのOpenCVSharp3でMatに高速でデータ読み書きする方法の紹介です。利用してデータの読み書きを行いたいと思います。3.4.1.20180319)です。Atメソッドは超遅い先ず初めに、OpenCVSharpでSetやAtで各ピクセルにアクセスしてみます。結論として速度がかなり遅いです。試しに全ピクセルにアクセスする以下のコードを実行してみます。750msくらいかかるAtの方が1.5倍くらい遅く0.75秒もかかってます。Mat.Dataを使って高速に操作するC++ならDataは配列になっていてインデックスやポインタでそのままアクセス可能ですがC#のOpenCvSharpの場合DataがIntPtr型になっています。コンテキスト内でポインタ操作すれば結構簡単にここへもアクセスできますが、通常のC#で操作する方法を考えたいと思います。処理の流れですが、DataのIntPtrそこで一旦ローカルの配列にデータを取得してMarshal系の操作でポインタの中身をマネージコードとやり取りします。Dataのポインタには連続したメモリ領域が割り当てられているのでサイズさえ合っていればC#らしくない乱暴な操作でも大丈夫です。2~3msで処理が終わるどちらの操作も、2~3msで処理が完了します。これならある程度、実用的な速度課と思います。Gray16など)を意識しないといけません。従って適切に画像ファイルで視覚化するのであれば、上記処理の前後でデータの加工が必要になります。(特に有効データ長が10bitや12bitの情報を16bitに書き出すとビューワー上では真っ暗という状況になります。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。Core3.xとUnityでAES暗号化を利用するC#の標準機能でデータを圧縮・展開するC#で属性を利用して処理に制約の説明を追加するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。