OpenCVの行列における演算子 *
の意味が、C++とPythonで異なるようですね。はまりそうです。PythonはOpenCVというかnumpyの仕様になりますが。
GZip(Deflate)Streamで圧縮するときはCloseを忘れなく
狭いスコープでusing
しておくのは大事だなと再認識。
書いたコード
byte[] original = File.ReadAllBytes(@"C:\Windows\explorer.exe"); var memory = new System.IO.MemoryStream(); var gzip = new System.IO.Compression.GZipStream( memory, System.IO.Compression.CompressionMode.Compress); gzip.Write(original, 0, original.Length); byte[] deflated = memory.ToArray(); Console.WriteLine(deflated.Length); // 1712138
それらしい結果ですが、壊れています。
正しいコード
byte[] original = File.ReadAllBytes(@"C:\Windows\explorer.exe"); var memory = new System.IO.MemoryStream(); var gzip = new System.IO.Compression.GZipStream( memory, System.IO.Compression.CompressionMode.Compress); gzip.Write(original, 0, original.Length); gzip.Dispose(); // !!! byte[] deflated = memory.ToArray(); Console.WriteLine(deflated.Length); // 1727359
Length
が変わりました。なお環境はWindows10 x64です。
Dispose (Close)せずにFlush
でも同じ効果かと思いましたが、変化は見られませんでした。
OpenCvSharpをつかう その24 (OpenCV 3.0のラベリング)
ラベリング3度目です。好きですね。露骨に作者の需要が現れています。
OpenCV3.0では、cv::connectedComponents
という待望のラベリング(連結成分の抽出)関数が追加されました。
- ・OpenCV: Structural Analysis and Shape Descriptors
- ・New functionality in OpenCV 3.0 | PACKT Books
- ・OpenCVを使ったラベリング · atinfinity/lab Wiki · GitHub
この関数を3.0.0.20150819版以降のラッパーでサポートしましたので、それを紹介します。
好みかもしれませんが、素のcv::connectedComponents
は、あまり使いやすい設計とは思えません。そこで、昔から添付しているOpenCvSharp.Blob
に使い勝手を近づけたラッパーも作成しました。それも紹介します。
OpenCvSharpをつかう その23 (OpenCV 3.0対応)
またまただいぶ間隔が空いてしまいすみません・・・
前回の記事(http://schima.hatenablog.com/entry/2014/09/08/220420)で罵詈雑言を浴びせたOpenCV3.0にOpenCvSharpをひとまず対応させました。
- NuGet Gallery | OpenCvSharp3 3.0.0.20150823
- Release 3.0.0 (16 Aug., 2015) · shimat/opencvsharp · GitHub
以下、簡潔に変更点・注意点を示していきます。
続きを読むOpenCV3.0alpha 変更点レビュー ~ラッパー開発者の視点から~
OpenCvSharpを3.0alphaに対応させる取り組みを始めました。なりふり構わず書き換え、まずはエラーが止まった段階のがこれです。
Release 3.0alpha (08 Sep., 2014) · shimat/opencvsharp · GitHub
2.0のときもひどい目にあいましたが、今回も何度くじけそうになったことやら。いや、現在進行形でくじけていますが。この道中で気づいたことを雑多に書き残します。新しいコンピュータビジョンのアルゴリズムがどうしたこうした、という話は一切ありません。それどころじゃない...
以下だいたいネガティブなので、あらかじめ弁明しておきますが、C++から触る分にはよくできたAPIになってきています。ラッパーのことなど考える必要はありません、このまま突き進んでいってください。
続きを読む