しまログ.2

Switch

桜舞いおどる日曜日。
お花見にも行けないこんな世の中じゃつまらない。
そんな訳で、バーチャルお花見を楽しむことにした。

きれいだなー。

続きを読む

潜入 ― Ghost Recon Wildlands

PCゲーム

2017年発売 Ghost Recon WildlandsをCO-OPで2人プレイした際の雑感です。
Steam版です。

概要

時は2019年。南米ボリビアを巣食うカルテル「サンタ・ブランカ」の排除を目的としたオペレーション「キングスレイヤー」に米軍特殊部隊Ghostsが投入される。

ボリビアの米国大使館付近で爆破事件が発生し、米国海兵隊2名が負傷。
その後、カルテルに潜入中であったDEA捜査官の死体を写したビデオが当局に送付される。
これらの事件の黒幕がサンタ・ブランカ・カルテルであり、米国はテロリストとしてサンタ・ブランカの排除を決定した。
オペレーションキングスレイヤーは、CIA、DEAに加え、主人公ノマドが所属するJSOC(統合特殊作戦司令部)の合同作戦である。

――
南米、特殊部隊、現代戦、そしてジャングルや市街地を行き来できるオープンワールドという最高のシチュエーション。ヨルムンガンドのような雰囲気を楽しめる。
使用できる武器や兵器の種類も豊富で、ステルスプレイからド派手な制圧戦、遠距離からの狙撃など様々なプレイスタイルで作戦に臨むことができるのだ。
ストーリー全編がシングル / マルチ双方に対応しているクールな設計なので、メインストーリーをCO-OP2人プレイで進めていくことにした。

続きを読む

しまログ.1

Switch

キャンプファイヤーで迎えられる無人島パッケージツアー一行。
一緒に移住する住民がいるのであれば、果たして、無人島生活と呼んでよいものだろうか。
しかしよく考えると、人ならざる住民しかいないわけだから、確かにここは無人島なんだ。


続きを読む

新玉川温泉

写真,

2020年2月某日
秋田県田沢湖、新玉川温泉へ旅をした。

冬は国道が一般通行できなくなるため、特定の路線バスでのみ玉川温泉へ行くことが可能だ。
田沢湖駅から新玉川温泉まで70分程度。バスのチケットは駅や温泉宿で買うことができる。

我々は田沢湖駅内のチケット売り場で往路分を購入した。Suica対応でキャッシュレス化が進んでいる。
バスのチケットは当日のみ有効なので、帰りの分は宿で買おう。


続きを読む

ガイノイドTalk!鳴花ヒメ・ミコト

日々

買っちゃったぜ!

ちゃんと喋るのすごい・・・声がかわいい・・・
梅がテーマって素敵だよね。

とりあえずプログラムと連携して動的に喋る方法を探してみます。

あけまして2020

日々

あけましておめでとうございます。

2020年代に入り、干支もひと回りして、新鮮な気持ちで新年を迎えました。

今年は積極的にアウトプットをする一年にしたいと考えています。

本年もよろしくお願いいたします。

デスストランディングはじめました

PS4, ゲーム

待ちに待ったKOJIMA HIDEO GAME!

コンセプトアートがそのままプレイフィールドになったような臨場感。

本当にトラッキングしているような気持ちになる。
水とコケと岩の表現がスゴイ。




ビジュアルだけでも没入感と冒険心が最高潮ですが、世界観も好きです。最高にSFしてます。
小島監督の色に伊藤計劃の鋭さが合わさったような印象です。

人の生死が現実を浸食していく。
人間の心とは、AIの心とは、精神と肉体の生と死。
文明を忘却させていく自然と、それに抗う人間の技術とネットワーク。

寄り道が楽しくて、全然ストーリーが進められないのが難点です。クリアまでまだまだかかりそう。

[OpenCV + Visual Studio 2019]Haar Cascadesでトラッキング

Tech

OpenCVに標準で用意されているHaar CascadeClassFilterを用いてWebカメラの映像から顔のトラッキングを試してみた。

環境

OS: Windows 10
Webカメラ: Logicool HD Webcam C525
開発環境: Visual Studio 2019(ver 16.2.3)
ライブラリ: OpenCV(4.1.1)
言語: C++

OpenCVをVisual Stdio 2019で使う準備

VS2019上でOpenCVを使うための事前準備。
導入済みの方は飛ばしてください。

まずは環境変数に以下のディレクトリをPathに追加する(OpenCVをCドライブ直下に展開した場合。以下、OpenCVのパスは各自環境に合わせてください)。
「C:\opencv\build\bin」

Visual Studio 2019を起動し、空のプロジェクトを作る。
メニューより「プロジェクト(P) > プロパティ」から、プロパティページを開く。
次の項目を変更する。

「構成プロパティ > VC++ディレクトリ > インクルードディレクトリ」に以下を追加
C:\opencv\build\include

「構成プロパティ > VC++ディレクトリ > ライブラリディレクトリ」に以下を追加
C:\opencv\build\x64\vc15\lib

「構成プロパティ > リンカー > 入力 > 追加の依存ファイル」に以下を追加
opencv_world411d.lib

環境構築は以上。


参考:
OpenCV(4.1.0) + Visual Studio 2019の設定忘備録 – Qiita @kenjiSpecial@github

OpenCV 4.1.1をVisual Studio 2019から使用する時の手順 – Qiita @h-adachi

カスケードフィルタ実装

OpenCVが提供している顔認識用のカスケードフィルタを使用して、リアルタイムのフェイストラッキングを実装する。

カスケードファイルの場所は以下の通り。
C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml

Windowsのパスは記述が面倒なので、使用するカスケードファイルをプロジェクトファイルのあるディレクトリにコピーする。
今回はfilterというフォルダを作り、その中にカスケードファイルを配置した。

顔検出のソースコードは以下の通り。
(参考: OpenCV: Cascade Classifier

#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>

using namespace std;
using namespace cv;


int main()
{
	CascadeClassifier face_cascade;

	// カスケードフィルタの場所を指定
	if(!face_cascade.load("./filter/haarcascade_frontalface_alt.xml"))
    {
        cout << "--(!)Error loading face cascade\n";
        return -1;
    };

	vector<Rect> faces;

	// ビデオデバイスを選択
	VideoCapture capture(0);
	if (!capture.isOpened())
	{
		cout << "--(!)Error opening video capture\n";
		return -1;
	}

	Mat frame;
	while (capture.read(frame))
	{
		capture >> frame;
		face_cascade.detectMultiScale(frame, faces, 1.1, 3, 0, Size(20, 20));

		// 検知対象を矩形表示
		for (int i = 0; i < faces.size(); i++)
		{
			rectangle(frame, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height), Scalar(0, 0, 255), 3, 16);
		}

		imshow("Capture - Face detection", frame);
		
		// escape押下でループ終了
		if (waitKey(10) == 27)
		{
			break;
		}
	}
	destroyAllWindows();
	return 0;
}


Github – suminoame/opencv_haar_tutorial

そこそこ良い精度で追従するが、顔が少しでも傾くと検知しなくなる(正面の顔を検出するフィルタであるため)。
今回使用したフィルタ以外にも、様々なカスケードファイルが公開されているので色々試してみよう。
(参考:「顔以外」のものを画像認識する on iOS ‐ Qiita@shu223


深層学習を用いたトラッキングも試したい。