Visual StudioでWindowアプリを作っていて、現在の状況を表示するためにTextBox か RichTextBoxを使う場合がある。私はいいアイディアが浮かばなかったので、短絡的にこれらを使った。メッセージをたくさん入れていくと、毎回スクロールするのが面倒なので、最後の行が見てみたい。
ってことで、最後の行に移動するソース
Form1::richTextBox1->Text = "Message";
richTextBox1->SelectionStart = richTextBox1->Text->Length;
richTextBox1->Focus();
richTextBox1->ScrollToCaret();
参考
http://dobon.net/vb/dotnet/control/tbscrolltolast.html
私の研究トピック(DroneとVision)で使った技術を紹介していきます。MachineLearningは興味のままで随時紹介。後は、気になるニュースを載せていきます。基本的には、タイトルに関するものを思うがまま書いていく!!
2015年8月21日金曜日
2015年8月14日金曜日
OpenCV でUSBカメラの画像を表示(Windows 8, Visual Studio 2013)
OpenCVを使ってUSBカメラの表示をしたので紹介。なぜか参考にしたサイトの通りのソースでは動かなく、ちょっと悩んだので紹介。
1. プロジェクトの作成
とりあえず、Consoleプロジェクトで行きましょう。
2. プロパティの設定
プロジェクトのプロパティを開き、
C/C++->Additional Include DirectoriesにOpenCVのインクルードフォルダを追加
Linker->Additional Library DirectoriesにOpenCVのライブラリフォルダを追加
Linker->Input->Additional Dependenciesに以下のファイル名を追加
opencv_core2410d.lib
opencv_highgui2410d.lib
opencv_objdetect2410d.lib
3. Source
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
// デフォルトのカメラをオープン
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
std::cerr << "camera cannot open" << std::endl;
return -1;
}
// ウィンドウを作成
cv::namedWindow("cap", CV_WINDOW_AUTOSIZE);
while (1)
{
cv::Mat frame;
// カメラからフレームを取得
cap >> frame;
// ウィンドウに表示
if (frame.size().height != 0 || frame.size().width!=0)
{
cv::imshow("cap", frame);
}
// 30 ms 待つ。キー入力があれば終了
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
参考:
http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
http://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30
1. プロジェクトの作成
とりあえず、Consoleプロジェクトで行きましょう。
2. プロパティの設定
プロジェクトのプロパティを開き、
C/C++->Additional Include DirectoriesにOpenCVのインクルードフォルダを追加
Linker->Additional Library DirectoriesにOpenCVのライブラリフォルダを追加
Linker->Input->Additional Dependenciesに以下のファイル名を追加
opencv_core2410d.lib
opencv_highgui2410d.lib
opencv_objdetect2410d.lib
3. Source
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
// デフォルトのカメラをオープン
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
std::cerr << "camera cannot open" << std::endl;
return -1;
}
// ウィンドウを作成
cv::namedWindow("cap", CV_WINDOW_AUTOSIZE);
while (1)
{
cv::Mat frame;
// カメラからフレームを取得
cap >> frame;
// ウィンドウに表示
if (frame.size().height != 0 || frame.size().width!=0)
{
cv::imshow("cap", frame);
}
// 30 ms 待つ。キー入力があれば終了
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
ここで、悩んだところは、
if (frame.size().height != 0 || frame.size().width!=0)
この1文。
参考のサイトにはないのだが、調べてみると、最初のフレームではCapからはデータは転送されず画面のサイズが0×0でAbortがでていた。2フレーム目からはちゃんと取得できていたので、ちょっと改造したのがこの1文です。もっといい方法があってり、ミスがあったら教えてください。
http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
http://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30
2015年8月13日木曜日
Visual Studio 2013 (C++) で Windowアプリ(C++/CLR)の作成
1. プロジェクトの作成
New projectをクリック。
「Visual C++」の下の「CLR」を選択し、右の欄で、「空のCLRプロジェクト」を選択する。
2. Formの作成
「追加」→「新しい項目」をクリックする。(仮に名前はDefaultのMyForm.hとする。)
左欄で「Visual C++」→「UI」(ユーザインターフェイス)を選択し、右欄で「Windowsフォーム」を選択して、「追加」をクリックする。
3. エントリーポイントの作成(mainをどこにするかを決める)
「プロジェクト」→「プロパティ」をクリックする。
の欄で、「構成プロパティ」→「リンカー」→「システム」と選択し、右の欄で、「サブシステム」を選択し、右端に現れる「V」をクリックして、現れたリストから「Windows(/SUBSYSTEM:WINDOW)」を選択する。
左欄の「構成プロパティ」→「リンカー」→「詳細設定」を選択し、右欄の「エントリポイント」に、「main」と入力して、「OK」をクリックする。
4. メインソース作成
プロジェクト名.cpp に以下のソースを追加する。
#include "MyForm.h"
int main(
){
WinAppTest::Application::Run(gcnew WinAppTest::MyForm());
return 0;
}
5. 実行
下の画面がでたら成功
参考:http://homepage3.nifty.com/ishidate/vcpp13_6/vcpp13_6.htm
New projectをクリック。
「Visual C++」の下の「CLR」を選択し、右の欄で、「空のCLRプロジェクト」を選択する。
2. Formの作成
「追加」→「新しい項目」をクリックする。(仮に名前はDefaultのMyForm.hとする。)
左欄で「Visual C++」→「UI」(ユーザインターフェイス)を選択し、右欄で「Windowsフォーム」を選択して、「追加」をクリックする。
3. エントリーポイントの作成(mainをどこにするかを決める)
「プロジェクト」→「プロパティ」をクリックする。
の欄で、「構成プロパティ」→「リンカー」→「システム」と選択し、右の欄で、「サブシステム」を選択し、右端に現れる「V」をクリックして、現れたリストから「Windows(/SUBSYSTEM:WINDOW)」を選択する。
左欄の「構成プロパティ」→「リンカー」→「詳細設定」を選択し、右欄の「エントリポイント」に、「main」と入力して、「OK」をクリックする。
4. メインソース作成
プロジェクト名.cpp に以下のソースを追加する。
#include "MyForm.h"
int main(
){
WinAppTest::Application::Run(gcnew WinAppTest::MyForm());
return 0;
}
5. 実行
下の画面がでたら成功
参考:http://homepage3.nifty.com/ishidate/vcpp13_6/vcpp13_6.htm
2015年8月9日日曜日
CLapack インストール (Visual Studio 2013, Windows8)
使おうと思っているライブラリがClapackを使っているようなのでインストールしてみた。
インストールの手順を示す。
1.ダウンロード
CLapackのサイトにいってcmake用ライブラリをダウンロード。
掲載時点では、clapack-3.2.1-CMAKE.tgz
適当なところで展開。私の場合は、ライブラリ関係はC:\devにおいているのでその下で展開した。
2.cmake
cmake で上記のフォルダを指定しconfigure してから Generate
(configureでwarningがいくつかでるが無視する。)
3.コンパイル
Buildの以下にある
clapack.sln
を実行。ここで、素直に全コンパイルをやるとエラーが大量にでる。ちゃんと、readme.installを読むと、以下の順番でコンパイルと書いてある。
4.Include と Libraryファイル
コンパイル結果のファイルの置き場所は以下(c:\dev\ に展開した場合)
Include:
C:\dev\clapack-3.2.1-CMAKE\INCLUDE
Library:
C:\dev\clapack-3.2.1-CMAKE\build\BLAS\SRC\Debug\blas.lib
C:\dev\clapack-3.2.1-CMAKE\build\F2CLIBS\libf2c\Debug\libf2c.lib
C:\dev\clapack-3.2.1-CMAKE\build\SRC\Debug\lapack.lib
Ref:
http://tauyosi.blog91.fc2.com/blog-entry-6.html
http://momose-d.cocolog-nifty.com/blog/2014/06/visual-studio-2.html
インストールの手順を示す。
1.ダウンロード
CLapackのサイトにいってcmake用ライブラリをダウンロード。
掲載時点では、clapack-3.2.1-CMAKE.tgz
適当なところで展開。私の場合は、ライブラリ関係はC:\devにおいているのでその下で展開した。
2.cmake
cmake で上記のフォルダを指定しconfigure してから Generate
(configureでwarningがいくつかでるが無視する。)
3.コンパイル
Buildの以下にある
clapack.sln
を実行。ここで、素直に全コンパイルをやるとエラーが大量にでる。ちゃんと、readme.installを読むと、以下の順番でコンパイルと書いてある。
f2c libraries
BLAS library
main libraryすると上手くいく。
4.Include と Libraryファイル
コンパイル結果のファイルの置き場所は以下(c:\dev\ に展開した場合)
Include:
C:\dev\clapack-3.2.1-CMAKE\INCLUDE
Library:
C:\dev\clapack-3.2.1-CMAKE\build\BLAS\SRC\Debug\blas.lib
C:\dev\clapack-3.2.1-CMAKE\build\F2CLIBS\libf2c\Debug\libf2c.lib
C:\dev\clapack-3.2.1-CMAKE\build\SRC\Debug\lapack.lib
Ref:
http://tauyosi.blog91.fc2.com/blog-entry-6.html
http://momose-d.cocolog-nifty.com/blog/2014/06/visual-studio-2.html
2015年7月1日水曜日
cmake Visual studio(2013) ALL_BUILD 実行ファイル変更
CmakeでVisual Studio用のファイルのslnを使ってプロジェクトを作ると、実行ファイルが標準ではALL_BUILDとなり、F5とかCtrl+F5で実行できない。
そこで、実行ファイルの指定を変えます。
通常の画面の上の[Project]->[Properties]を起動。
Single startup project でALLBUILDから実行ファイルのあるプロジェクトに変更する。
だけ。自分でVisual Studioを触れば早かったのだが、検索ではいいものがみ、意外に苦労した。意外に苦労した。
そこで、実行ファイルの指定を変えます。
通常の画面の上の[Project]->[Properties]を起動。
Single startup project でALLBUILDから実行ファイルのあるプロジェクトに変更する。
だけ。自分でVisual Studioを触れば早かったのだが、検索ではいいものがみ、意外に苦労した。意外に苦労した。
2015年6月7日日曜日
Visual studio でpopen を使う。(Visual Studio 2013 )
VC++では、popen / pclose が使えません。
どうすればいいかというと、関数名の前に、「_」を付けましょう。
_popen
_pclose
こうすれば使えます。
どうすればいいかというと、関数名の前に、「_」を付けましょう。
_popen
_pclose
こうすれば使えます。
2015年6月3日水曜日
Visual Studio Editor 行番号の表示
メニュー バーの [ツール]、[オプション] の順にクリックします。 [テキスト エディター] ノードを展開し、使用中の言語のノードを選択するか、[すべての言語] を選択してすべての言語の行番号をオンにします。 または、[クイック起動] ボックスに行番号を入力します。
ref; https://msdn.microsoft.com/ja-jp/library/ms165340.aspx
2015年5月28日木曜日
Visual Studio 2015 コンソールアプリケーションで実行後にコンソールが消えないようにする
1.めんどくさくない方法
Ctrl + F5 = デバックなしで実行
で起動する。
2.コードが必要な方法
処理の最後に、入力待ちのコードを入れる。getchar とかcin とか。
3.ブレークポイント
プログラムの最後の方にブレークポイントを置く。
Ctrl + F5 = デバックなしで実行
で起動する。
2.コードが必要な方法
処理の最後に、入力待ちのコードを入れる。getchar とかcin とか。
3.ブレークポイント
プログラムの最後の方にブレークポイントを置く。
登録:
投稿 (Atom)





