なんだかメモ帳の文字が変だぞ?

Windowsのメモ帳(notepad.exe)にコピペした文字を眺めていたら、なんだか変なことになっていることに気付いた。

メモ帳のフォントは "MS ゴシック" のはずなのに、文字がなんだか明朝体っぽいのだ。

f:id:tuttitan:20170117200016p:plain

もしかして中国の文字か?と思ってWordに貼り付けて調べてみるとUnicode的にF始まりの文字で私用領域よりも外側にあるCJK互換漢字(U+F900~U+FA2D)だった。

詰まるところ外字でしたw

 

正規化することでCJK統合漢字(JIS第一水準・第二水準)に戻せるっぽいけどなかなか興味深い。

f:id:tuttitan:20170117201813p:plain

 

参考Webページ

 

生麦〜東戸塚に謎の線路がある

Google Mapsを眺めていたら、大口界隈で横浜線と交差する謎の線路を目にした。
地図には路線名も書いてないし、『こんなところに鉄道なんてあったっけ?』と思って調べてみると、どうやら地下を走っている貨物線とのこと。

f:id:tuttitan:20170107132653p:plain

地図を辿っていくと、京急の生麦から分岐して東戸塚まで繋がっている。JR東海道貨物線の駅としては鶴見〜横浜羽沢〜東戸塚があるので、どうやら貨物列車は横浜を迂回してこの区間を走っているっぽい。

 

参考Webページ

vim ことはじめ(Syntax Highlight)

vimにも少し慣れておかないとなぁと、perlのコードを書いたときの話。

emacsなら何もしなくても ".pl" はPerlコードですね!Syntaxハイライトします。となるところだけど、vimの場合はこれを自動的にやってくれないという。

そんなバカなと思って調べてみると、どうやら ~/.vimrc にお作法を書いておく必要があるとのこと。とりあえず以下のように書いたところちゃんとSyntaxハイライトがかかりました。

syntax on
set autoindent
set expandtab
set tabstop=4
set shiftwidth=4
set cursorline
set number

 

 

参考Webページ

Visual Studio 2015 でOpenCV2.xを使う (第2回)

前回はCMakeを使ってVisual Studio 2015用のOpenCVプロジェクトを生成するところまで紹介しました。

 

tuttitan.hatenablog.com

 

今回は、OpenCVプロジェクトのビルドから動作確認までを見ていきたいと思います。

 

 

1. OpenCVプロジェクトのビルド

(Generate実行後)CMakeの [Open Project] ボタンをクリックするか、buildフォルダにある "OpenCV.sln" を開くと、Visual Studio 2015が起動し、ソリューション "OpenCV" が読み込まれている状態になります。

f:id:tuttitan:20161227153324p:plain

 

まずはDebug用のバイナリとライブラリファイルを生成したいと思うのので、ソリューションの構成が「Debug」になっていることを確認します。(32bit用の場合は「Win32」、64bit用の場合は「x64」になります)

f:id:tuttitan:20161227153432p:plain

 

ソリューションをビルドします。Debugの場合はあまり時間がかからなかったです。

f:id:tuttitan:20161227153752p:plain

 

ビルド中は下方にある出力ウィンドウにログが出力されます。ビルドが完了するとその旨が出力ウィンドウに表示されます。エラーや失敗がないことを確認して下さい。

f:id:tuttitan:20161227154150p:plain

f:id:tuttitan:20161227154332p:plain

 

ビルドが正常に終了したら、ソリューションの構成を「Release」に変更して、同様にビルドを行ないます。

f:id:tuttitan:20161227154516p:plain

 

以上で、Debug用とRelease用のバイナリとライブラリファイルが生成されたことになります。場所としてはbuildフォルダの下に "bin" と "lib" が作られており、その中にそれぞれ "Debug" と "Release" がある構成になっています。

C:\opencv
└─ opencv-2.4.13
     ├─ build
     ├─ sources
     ├─ LICENSE.txt
     ├─ README.md.txt
     └─ build_x86
          ├─ bin
          |   ├ Debug
          |   └ Release
          └─ lib
               ├ Debug
               └ Release

 

 

2. バイナリとライブラリファイルを配置する

このままのフォルダ構成でも問題はないのですが、見通しをよくするためにファイルを再配置します。

もともとあるOpenCVのbuildフォルダを見てみると、以下のような構成になっています。

C:\opencv
└─ opencv-2.4.13
     ├─ build
     |   ├─ x86
     |   |   ├─ vc11
     |   |   └─ vc12
     |   |        ├─ bin
     |   |        └─ lib
     |   └─ x64
     |        ├─ vc11
     |        └─ vc12
     |             ├─ bin
     |             └─ lib
     ├─ sources
     ├─ LICENSE.txt
     ├─ README.md.txt
     └─ build_x86

 

つまり、buildの下に "x86"(32bit用)と "x64"(64bit用)があり、その下にそれぞれ "vc11"(Visual Studio 2012用)と "vc12"(Visual Studio 2013用)があって、その中に "bin"(バイナリ)と "lib" ライブラリファイルがあることになります。

このフォルダ構成になって、vc14(Visual Studio 2015用)のフォルダを作ってそこに先ほどビルド生成したバイナリとライブラリファイルを配置したいと思います。

なお、再配置するファイルは以下の拡張子のものになります。

  • exe
  • dll
  • lib

拡張子がpdb、ilk、expのものはVisual Studioのプロジェクトが使用するファイルなので移動させる必要はありません。

 

 

3. OpenCVの動作確認を行なう

ビルド生成して配置したOpenCVバイナリとライブラリファイルが正しく使えるか確認します。Visual Studio 2015 を起動させて適当な場所にコンソールアプリケーションのプロジェクトを作成します。

 

OpenCVのサンプルページを参考に適当にプログラムを書きます。

入出力 — OpenCV2 プログラミングブック リファレンス編

f:id:tuttitan:20161227184850p:plain

 

プロジェクトのプロパティを編集します。左方の「VC++ ディレクトリ」を選択し、「インクルード ディレクトリ」と「インクルード ディレクトリ」に以下をそれぞれ追加します。

インクルード ディレクト C:\opencv\opencv-2.4.13\build\include
ライブラリ ディレクト C:\opencv\opencv-2.4.13\build\x86\vc14\lib

f:id:tuttitan:20161227185914p:plain

 

Debug構成およびRelease構成でビルドできることを確認します。ソリューションフォルダの下に "Debug" フォルダと "Release" フォルダが出来ているので、dllファイルを "C:\opencv\opencv-2.4.13\build\x86\vc14\bin" よりそれぞれのフォルダにコピーします

コピー先コピー元
ソリューション名/Debug C:\opencv\opencv-2.4.13\build\x86\vc14\bin\Debug
ソリューション名/Release C:\opencv\opencv-2.4.13\build\x86\vc14\bin\Release

 

 「デバッグの開始」を実行してうまく動けばOKです。

f:id:tuttitan:20161227191121p:plain

Visual Studio 2015 でOpenCV2.xを使う (第1回)

OpenCV3がリリースされて1年以上経ちますが、使い慣れたOpenCV2.x系を使って開発したいという方もおられることでしょう。

しかし、OpenCV2.x(執筆時点で最新は2.4.13)をダウンロードしてみると、プレビルドされたバイナリとライブラリファイルはvc11(Visual Studio 2012用)とvc12(Visual Studio 2013用)しかありません。

 

というわけで、Visual Studio 2015でOpenCV2.xを使おうと思うと、自分でバイナリとライブラリファイルをビルドしなければなりません。手順としては以下のようになります。

  1. Visual Studio 2015用のプロジェクトを作成するために、CMakeをインストールする
  2. OpenCVをダウンロードする
  3. CMakeでOpenCVプロジェクトを作る
  4. Visual StudioOpenCVプロジェクトをビルドして、バイナリとライブラリファイルを生成する

今回の記事ではCMakeをインストールしてOpenCVのプロジェクトを作成するところまで見ていきたいと思います。

 

1. CMakeのインストール

CMakeをダウンロードします。CMakeはソースファイルからビルドすることもできるみたいですが、それには古いCMakeが必要になるので新規でCMakeをインストールする場合は大人しくインストーラー(.msiパッケージ)をダウンロードします。

  • 32ビット環境の場合は、cmake-x.x.x-win32-x86.msi
  • 64ビット環境の場合は、cmake-x.x.x-win64-x64.msi

 

https://cmake.org/download/

f:id:tuttitan:20161227135240p:plain

 

インストーラーをダウンロードしたら、実行してCMakeのインストールを開始します。下図のようなSetup Wizardが出てくるので [Next] をクリックして次へ進みます。

f:id:tuttitan:20161227135732p:plain

 

エンドユーザライセンスに一応目を通して、チェックボタンにチェックを入れてから [Next] をクリックして次へ進みます。

f:id:tuttitan:20161227135837p:plain

 

インストールオプションを選択します。特に問題がないようなら「Add CMake to the system PATH for all users」を選択して、お好みで「Create CMake Desktop Icon」をチェックします。
前者は全ユーザーに対してCMakeのパスを通すという意味になります。
後者はデスクトップにCMakeのショートカットを作成するということになります。

f:id:tuttitan:20161227135942p:plain

 

CMakeのインストール先を指定します。特に問題ないようならDefaultのままでよいでしょう。[Next] をクリックして次へ進みます。

f:id:tuttitan:20161227140255p:plain

 

以上でインストールの準備が整ったことになります。[Install] をクリックしてインストールを開始します。(なお、管理者権限が必要になります)

f:id:tuttitan:20161227140353p:plain

 

インストールはすぐ終わります。

f:id:tuttitan:20161227140506p:plain

 

インストールが完了すると下図のような画面になります。[Finish] をクリックしてインストーラーを終了します。

f:id:tuttitan:20161227140553p:plain

 

 

2. OpenCVのダウンロード

次にOpenCV2.xをダウンロードします。

VERSION 2.4.13 のところで 「OpenCV for Windows」を選択します。

 

http://opencv.org/downloads.html

f:id:tuttitan:20161227141250p:plain

 

ファイル(自己解凍形式)がダウンロードされたら、実行してファイルの中身を展開します。展開先は任意の場所で構いません。

 

OpenCV用にフォルダを作成します。分かりやすい場所でよいと思いますが、私の場合は C:\opencv としました。作成したフォルダに展開したフォルダを移動させます。このとき、OpenCVのバージョンが分かるようにフォルダ名を変更しておいたほうがよいでしょう。

フォルダ構成としては次のようなります。

C:\opencv
└─ opencv-2.4.13
     ├─ build
     ├─ sources
     ├─ LICENSE.txt
     └─ README.md.txt

 

 

3. OpenCV用プロジェクトの作成

Visual Studio 2015 でビルドするためのOpenCVのプロジェクトをCMakeを使って生成します。

 

まずはCMakeを起動します。

上方にある「Where is the source code:」の箇所に先に展開して移動させたOpenCVのsourcesのフォルダを指定します。

「Where to build the binaries:」の箇所にはプロジェクトの生成先を指定します。OpenCVのbuildフォルダを指定すると既存ファイルとごちゃごちゃになるので新たなフォルダを切ります。ここではx64用のプロジェクトを作成したかったので "build_x64"という(存在しない)フォルダを指定しています。

f:id:tuttitan:20161227143917p:plain

 

上方の2つのパスを入力した後、下方にある [Configure] ボタンをクリックします。buildフォルダが存在しない場合は、下図のようにフォルダを作成するか聞かれるので [Yes] と答えます。

f:id:tuttitan:20161227144605p:plain

 

何用のプロジェクトにするか聞かれるので、32bit用の場合は「Visual Studio 14 2015」、64bit用の場合は「Visual Studio 14 2015 Win64」をプルダウンリストから選択します。

「Optional toolset to use」は空白のままで、コンパイラの選択は「Use default native compilers」のままでよいでしょう。

[Finish] をクリックすると Configureが始まります。

f:id:tuttitan:20161227145420p:plain

 

Configureしています...

f:id:tuttitan:20161227145604p:plain

 

Configureが完了すると、下図の様な画面になります。画面中央にある赤地のところのチェックボックスによってプロジェクトの設定を行なっていくのですが、普段使いならそのままでよいでしょう。

[Configre] のとなりにある [Generate] をクリックすると、Visual Studio用のプロジェクトが生成されます。

f:id:tuttitan:20161227145953p:plain

 

Generate が完了すると下図のような画面になります。[Generate] のとなりにある [Open Project] をクリックすると生成されたプロジェクトが Visual Studio 2015 で開かれます。

f:id:tuttitan:20161227150535p:plain

 

プロジェクトはbuildフォルダ(今回の場合は C:\opencv\opencv-2.4.13\build_x64)の下に "OpenCV.sln" という名前で生成されています。

 

OpenCV.sln をビルドして、OpenCVバイナリとライブラリファイルを生成する話は次回に書きたいと思います。

 

 

参考Webページ

秋イベを振り返る。その7

艦これ秋イベント2016の話です。
E4海域で輸送が完了すると、部隊は左から右へと移りいよいよ殲滅作戦の攻略となります。

編成によって道中4戦ルート、5戦ルート、6戦ルートとあるのですが、最も安定していた4戦ルートで攻略を進めました。

いずれにしても道中には、

  • 防空カットイン不発で一発退場の航空戦マス
  • 艦隊支援も先制攻撃も通用しない潜水艦マス
  • 軽量編成では歯が立たないフラルマス

があり、ようやくボスに辿り着けたとしても通常艦隊で連合艦隊(敵)を相手にしなければならなく本イベント屈指の難易度でした。

はじめは難易度甲でやっていたのですが、ラスダン編成になった途端 異次元の難易度に...(ボス随伴艦のWフラヲ改が明らかに無理)
甲種のクリア報酬が試製甲板カタパルトで手に入れたかったのですが、イベント終了期限も迫っていたので乙種に難易度を下げて攻略しました。

 

キラ付けして道中支援出しても、5戦ルートは決まってRマスのフラヲ改にやられるかSマスのフラルにやられていたので4戦ルートで進行。航空戦マスで事故があったもののキラキラが付いていれば基本的にボスまでは辿り着けました。(甲種の場合は、辿り着けないほうが多かったけど)

f:id:tuttitan:20161208152718p:plain

 

編成は高速統一で、戦艦もしくは正規空母は1隻までというシビアさ。

普段はキラ付けは面倒なため「しない派」なのですが、この海域はキラキラなしでは突破不可なんじゃないかと思いました。

 

Visual Studio 2015 を使ったCLIアプリケーション開発 (第2回)

前回はVisual Studio 2015 Communityをインストールするところまで紹介しました。

tuttitan.hatenablog.com

 

 

今回は、簡単なC++/CLIアプリケーションを作成するところまで紹介したいと思います。

 

はじめてVisual Studio 2015 Communityを起動すると次のような画面が現れます。アカウントがあったほうがよいのですが、ここではひとまず「後で行う。」をクリックして先に進みます。

f:id:tuttitan:20161226212825p:plain

 

好みの配色テーマを選択して、「Visual Studio の開始」をクリックします。

f:id:tuttitan:20161226213100p:plain

 

しばらくするとVisual Studioのメイン画面が現れるので、「メニュー」より [ファイル] → [新規作成] → [プロジェクト] を選択します。

f:id:tuttitan:20161226213501p:plain

 

どのようなプロジェクトを作るのかと聞かれるので、左方にある [テンプレート] から [Visual C++] → [CLR] を選択。「空のCLRプロジェクト」を選択して、プロジェクトの「名前」を「場所」を適当に入力して「OK」ボタンをクリックする。

f:id:tuttitan:20161226230749p:plain

 

空のプロジェクトが作成されたのを確認して、「メニュー」より [プロジェクト] → [新しい項目の追加...] を選択する。

f:id:tuttitan:20161226231009p:plain

 

どのような項目を追加するのか聞かれるので、左方より [Visual C++] → [UI] を選択。「Windowsフォーム」を選択して、名前を適当に入力してから [追加] ボタンをクリックする。
ここで入力した名前がクラス名になりますので考えて入力しましょう。(場所に関してはそのままでよいでしょう)

f:id:tuttitan:20161226231404p:plain

 

以上で空のプロジェクトに Myform.h と Myform.cpp が追加されますが、下のようなエラーメッセージが表示されるかも知れません。

「データが失われる可能性を防ぐため、デザイナーの読み込み前に以下のエラーを解決する必要があります。」と言われても困りますよね。

f:id:tuttitan:20161226231703p:plain

 

これはDebugに自動的に生成されたファイルに不具合があるために起こる現象なのではないかと推察できます。なので、プロジェクトファイル(.vproj)の下にあるDebugフォルダの中身を一度削除します。(フォルダ自体は削除しないこと)

f:id:tuttitan:20161226231928p:plain

 

MyForm.h タグを一度閉じて、[ソリューション エクスプローラ] から開きなおすと初期状態のフォームが正しく表示されるようになります。

f:id:tuttitan:20161226232202p:plain

 

今回は簡単な C++/CLI アプリケーションを作成するということなので、「HelloWorld」という文字を表示するフォームを作りたいと思います。まずはメニューより [表示] → [ツールボックス] を選択します。

f:id:tuttitan:20161226232411p:plain

 

ツールボックスが表示されるので、[コモンコントロール] より [Label] を選択してフォーム上に配置します。

f:id:tuttitan:20161226232639p:plain

 

続いて、追加したラベル(今回は "label1" )が選択されていることを確認して右下にある [プロパティ] ウィンドウの Font と Text を編集します。
今回、文字を大きくしたかったのでFontは32ptで、Textは "HelloWorld" としました。

f:id:tuttitan:20161226233145p:plain

 

次にプログラムを編集します。[ソリューション エクスプローラ] から MyForm.cpp を選択して、以下のコードを入力します。

#include "MyForm.h"

using namespace System;


[STAThreadAttribute]
int main(void) {
	HelloWorld::MyForm^ form = gcnew HelloWorld::MyForm();
	form->ShowDialog();
	return 0;

}

f:id:tuttitan:20161226233428p:plain

 

続いてプロジェクトのプロパティを変更します。「メニュー」より [プロジェクト] → [HelloWorld のプロパティ...] を選択します。

f:id:tuttitan:20161226233803p:plain

 

「プロパティ ページ」が現れるので、左方にある [リンカー] → [システム] を選択し、「サブシステム」に "Windows" を選択します。(プルダウンメニューより選択)

f:id:tuttitan:20161226234016p:plain

 

[システム] の下方にある [詳細設定] を選択して、「エントリ ポイント」に main を指定します。(ここは手入力)
以上の2箇所を変更したら [OK] ボタンをクリックして「プロパティ ページ」を閉じます。

f:id:tuttitan:20161226234218p:plain

 

ソリューションをビルドして実行すれば、HelloWord と表示されたフォームが現れるはずです。

f:id:tuttitan:20161226234613p:plain

 

途中で罠(エラー)がありましたが、これで C++/CLI アプリケーションを作成できるようになりました。めでたし。

 

 

参考Webページ