ScribeFire
仕事が忙しくなったりして、ブログを休んでいたけど、せっかく始めたブログなので再開することにした。
再開するにあたって、自宅のパソコンがWindowsからMacに変わったので、Windows Live Writerが使えなくなってしまった。
Live Writerはとても使いやすく気に入っていたので、何とかならないか検討した。
Windowsパソコンの購入、VMwareをMac上で動かす、Boot Campを使う、どれもWindowsのライセンスが必要となり費用が発生するため却下した。
調査した結果、無償でありWEB上での評価も上々な、ScribeFireをChrome上にインストールして使用することにした。
プロバイダの設定に多少悩んだが、使用できるようになった。
参考URL:
http://firefoxaffiliate.blog.fc2.com/blog-entry-23.html
http://matome.naver.jp/odai/2141328520137647801
MFCについて
急遽、MFCでプログラムする案件が発生した。
MFCプログラミングの経験がほぼ無いため、GUI部のコーディングを経験者に依頼し、動作部のみ自分でコーディングすることにした。
これを機会に、MFCの勉強をしようとしたが、書籍は古いものしかなくWEB情報に頼らざるをえない状況である。
さすがに古くても参考書は手元に置きたいので、比較的口コミの好評な以下の参考書(中古)を注文した。
アマゾンのプライム会員なので、本日4月24日(金)に注文し、明日4月25日(土)には届く。
こういう時には、プライム会員でよかったと感じる。
「Amazon.co.jp: 標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング (Programmer’s SELECTION): ハーバート シルト, 田中 正造, Herbert Schildt, コスモワークス: 本」
http://www.amazon.co.jp/dp/4881357042/
シングルモルト・ウィスキー [生活]
なりたい自分について、ここ数日考えている。ふとした過去の記憶から”島地勝彦”さんのことを思い出した。さっそく調べてみたら、やっぱり魅力的でかっこいい人だった。
シガーとシングルモルトウィスキーが好きらしいので、サントリーのシングルモルトウィスキー「山崎」を買って飲んでみた。
まろやかで柔らかな味わいは、今まで飲んだことのない経験でした。
少々割高ですが、いろいろ飲んでみたと思いました。
これをきっかけに、なりたい自分を追及したいですね。
cv::Mat での各要素へのアクセス方法 [OpenCV]
CV_GRAY2BGR 形式のcv::Mat データの各要素へのアクセス方法。
画像の最大、最小、平均輝度を求める方法
px->data.max = 0;
px->data.min = 0xffff;
px->data.ave = 0;
px->data.count = 0;uint64_t total = 0;
for (int y = 0; y < roi->rows; ++y){
for (int x = 0; x < roi->cols; ++x) {
for (int c=0; c<roi->channels(); c++) {
unsigned short B = roi->at<cv::Vec3s>(y, x)[0];
unsigned short G = roi->at<cv::Vec3s>(y, x)[1];
unsigned short R = roi->at<cv::Vec3s>(y, x)[2];
unsigned int pixelData = B + G + R;if (pixelData > px->data.max) px->data.max = pixelData;
if (pixelData < px->data.min) px->data.min = pixelData;
total += pixelData;
px->data.count++;
}
}
}
px->data.ave = (unsigned int)(total / px->data.count);
参考サイト
- http://minus9d.hatenablog.com/entry/20130126/1359194404
- http://d.hatena.ne.jp/takmin/20100816/1281957306
構造体を共有メモリを使用しC++からVB.NETへ転送する方法 [VB]
以下にコードを示す。
C++側ソース
ShareMemクラス
ShareMem.h
ShareMem.cpp
ShareMem.vb
参考サイト
- http://msdn.microsoft.com/ja-jp/library/4ca6d5z7.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
- http://www.hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=10977&reno=10976&oya=10974&mode=msgview&page=$page
cv::Mat 画像データを共有メモリを使用しC++からVB.NETへ転送する方法 [VB]
OpenCVで画像処理を行う部分はWin32 C/C++、GUI部は比較的楽に開発できるVB.NETを使用したかった。そのため画像データを共有メモリ経由でWin32 C/C++ → VB.NETへ転送するコードを書いたが以下の問題のた試行錯誤を繰り返して時間を取られることになった。最終的に成功することが出来たので、コードを残しておく。
試行錯誤した構成
OpenCV cv::MatまたはIplImage画像形式のまま、共有メモリに書き込み、VB.NETでOpenCVを利用できる、OpenCvSharpを導入することで画像を転送する。
C/C++側から共有メモリへ書き込みが出来るが、C/C++、VB.NET共に読み込みできない。調査を進めると、画像データ内のポインタがエラーとなっていた。調べてみるとポインタの実メモリ部は共有メモリには書き込まれていないことが判明。確かに別のアドレス空間から、このポインタを参照してもデータにはアクセスできないですね。
今回の構成
C/C++側でOpenCVデータをビットマップに変換し、そのデータ部を共有メモリに書き込む。ビットマップインフォメーション部の転送は時間がないので今回は考えていない。おいおい「構造体の共有メモリ転送」としてアップします。
以下にコードを示す。
C++側ソース
BmpMemクラス ----------
BmpMem.h
BmpMem.cpp
main()部
VB.NET部
参考サイト
- http://seesaawiki.jp/urakana-tips/d/OpenCV%A4%F2Win32API%A4%C8%C1%C8%A4%DF%B9%E7%A4%EF%A4%BB%A4%C6%BB%C8%A4%A4%A4%BF%A4%A4
- http://buaiso.blogspot.jp/2012/07/boost.html
- http://dobon.net/vb/bbs/log3-31/19304.html
- http://imagingsolution.net/program/opencv/iplimage2bitmap/
共有メモリー(C++とVB.Net)間の共有方法 [VB]
アプリケーションの動作速度を早くするため、処理に時間のかかる部分をC++、そしてGUI作成が比較的容易で出来上がりがきれいなVB.NETを利用して設計した。
C++部分の動作ステータスを確認するため共有メモリを導入したのでそのコードを記録する。
C++部
PfaSharedMem.h
PfaSharedMem.cpp
VB.NET部
関数定義部
共有メモリ作成部
共有メモリ読込み部
共有メモリ破棄部
以上
日本よ、世界の真ん中で咲き誇れ [読書]
志ん朝の落語〈1〉男と女 [読書]
OpenCVとOpenGLの座標系 [OpenCV]
OpenCVは左上原点
OpenGLは一般的な左下原点
OpenCVを一般的な座標で考える場合は、(x,y,z) = (1,-1,-1)をか掛ける。
参考サイト
- http://jibaravr.blog51.fc2.com/blog-entry-83.html
- http://stackoverflow.com/questions/9081900/reference-coordinate-system-changes-between-opencv-opengl-and-android-sensor