Windows10でアプリ表示がぼやけてしまう場合の対処
ノートパソコンを新しくしてMATLAB R2017aを起動したことろ、以下のように画面がぼやけて表示されてしまう現象にあいました。
この現象が現れるのは、外部ディスプレイに接続して表示した場合のみで、組み込みディスプレイではちゃんときれいに表示されています。
原因はなんなのか…高画素ディスプレイを使用しているためにアプリが対応していなくで微妙に拡大表示されているのかな、とも考えながらググっていたらいい記事を発見したので転載しておきます
解決方法
アプリの実行ファイルのショートカットの"プロパティ"から、
互換性 > 高DPI設定の変更 >
・"プログラムDPIにチェック"
・"DPIの使用をプログラムを開いたときに変更"
を設定すれば完了です。
これで、きれいに表示されるようになりました。
よかったです。
OpenCV3.4.3の環境構築【Windows10】
はじめに
Windows環境かつVisual Studioで、OpenCVを利用したアプリケーション開発を行いたい人向けの環境構築方法について載せておきます。なお、OpenCV3.4.3をCmakeを用いてビルドする方法を紹介します。動作確認としてVisual Studio 2015を利用します。
OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)
- 作者: 小枝正直,上田悦子,中村恭之
- 出版社/メーカー: 講談社
- 発売日: 2017/07/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
環境
Windows10 Pro
Visual Studio 2015
OpenCV3.4.3
CMake3.13.0
CMakeのインストール
現行で最新のcmake-3.13.0のwindows版を公式サイトからダウンロードします。今回はzipファイルを選択します。
↓ダウンロードリンク(zipファイルがダウンロードされます)
https://cmake.org/files/v3.13/cmake-3.13.0-rc2-win64-x64.zip
zipファイルをインストールしたら任意のフォルダに展開(解凍)してください。私の環境では2,3分かかりました。
このようなフォルダとなっているはずです。
「~\bin\cmake-gui.exe」でもうCMakeを使うことができます。
cmake-gui.exeを実行すると以下のようなGUIが表示されれば正常にインストール完了です。
もし以下のような注意が表示された場合は、「詳細情報」から「実行」を選択してください。
OpenCVのインストール
現行でOpenCV3シリーズ最新の”OpenCV3.4.3”のwindows版を公式配布サイトからダウンロードします。今回はCMakeでビルドするので「Sources」を選択します。
↓ダウンロードリンク(zipファイルがダウンロードされます)
https://github.com/opencv/opencv/archive/3.4.3.zip
zipファイルをインストールしたら任意のフォルダに展開(解凍)してください。私の環境では3分くらいかかりました。
このようなフォルダ構成となっているはずです。
それではCmakeでビルドしていきます。
Cmake-GUIを起動して、以下の操作をしてください。
- ソースコード場所には、さっき解凍した先のルートディレクトリ「C:\<保存先>\opencv-3.4.3」を、ビルド先(ソリューションファイルの生成先)には,「C:\<保存先>\opencv-3.4.3\build」をそれぞれ指定
- 「Configure」をクリック
- 今回はVisual Studio 2015の環境なので、コンパイラは「Visual Studio 14 2015 Win64」を指定
そうすると、
下図のように設定可能なパラメータが赤く表示されます。任意で設定項目を変更してください。特に設定をしない場合は、そのままで結構です。
CUDAの設定を行いたい方は、次節を読んでください。
設定をカスタマイズした後に「Configure」をクリックし、最後に「Generate」をクリックことで、ソリューションファイルを生成できます。
CUDAの設定を行う
使用するパソコンにCUDAがインストールされており、OpenCVのCUDA機能を使いたい人のみ以下の設定を行ってください。なお、この設定を行うとビルド時間がとても長くなります。
(以前に他のPCでセットアップした時の設定なのでVersionが異なります)
↓↓ GPUのアーキテクチャ番号の確認
https://developer.nvidia.com/cuda-gpus
OpevCVでCUDAを利用する場合の設定は以上です。
以下はCUDAを利用しない人も共通です。
OpenCVのビルド
ソリューションファイルの生成先に指定した「C:\<保存先>\opencv-3.4.3\build」直下にある「OpenCV.sln」をVisual Studioで開きます。
- バッチビルドから”ALL_BUILD”のDebugとReleaseをチェックします。
- チェックしたら”ビルド”します。
- ビルドが終了し「C:/<保存先>/opencv-3.4.3/build/install」にinclude、libおよびbinが正しく保存されていれば完了です。
サンプルプログラム
黒背景に緑色の「OpenCV」の文字を描画した画像を生成するだけのプログラムになります。実行すると以下のような画像が表示されます。
#include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #include <iostream> // OpecCVのライブラリの読み込み #ifdef _DEBUG #pragma comment(lib,"opencv_core343d.lib") #pragma comment(lib,"opencv_highgui343d.lib") #pragma comment(lib,"opencv_imgproc343d.lib") #else #pragma comment(lib,"opencv_core343.lib") #pragma comment(lib,"opencv_highgui343.lib") #pragma comment(lib,"opencv_imgproc343.lib") #endif int main() { // 幅320px-高さ240pxの画像を生成 cv::Mat img(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 0)); // 画像に「OpenCV」の文字列を描画 cv::Mat dst = img.clone(); cv::putText(dst, "OpenCV", cv::Point(80, 100), cv::FONT_HERSHEY_SIMPLEX, 1.2, cv::Scalar(0, 200, 0), 2, CV_AA); // 描画 cv::imshow("dst image", dst); cv::waitKey(10000); return -1; }
Cドライブのアイコンにビックリマークが表示された場合の対処【Windows10】
先日ノートPCを新しくしてセットアップをしていたら、気づいたらCドライブのアイコンにビックリマークが表示されていました。
最初ドライブ名を設定していなかったので、「Local-Drive」と変更したのですがそれでもビックリマークは消えない…なぜなんだー?
といことでググッてみたら同じ症状が出てる人がわりといまして、この方の記事がわかりやすく原因と対処方法を載せてくれていました。
原因
どうやら、ドライブが暗号化されていないためのようです。
対処
暗号化されてないって、じゃぁどーすればいいの?
「BitLocker」というWindows10に標準搭載されているディスク暗号化機能を使って暗号化すればよいそうです。
まず、Cドライブを右クリックして「BitLockerを有効にする」をクリックしてください。
以下のような画面が表示されるはずです。
Microsoftアカウントのサーバー(たぶんonedrive)にバックアップを保存したい人は「Microsoftアカウントに保存する」を指定してください。今回はローカルもしくは個人サーバーのファイルにバックアップ場所を確保したいので、「ファイルに保存する」を選択します。
保存先のフォルダを指定するダイアログボックスが開かれるので、保存先を指定して”保存する”ボタンをクリックしてください。
最後にアクティブ化の画面が出てくるので、「BitLockerのアクティブ化」をクリックして終了です。
これで、Cドライブは暗号化されアイコンに表示されていたビックリマークが消えるはずです。
Windows 10完全ガイド 基本操作+疑問・困った解決+便利ワザ (一冊に凝縮)
- 作者: 井上香緒里
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログを見る
OpenCV3.2のVideoWriterを使って動画作成
連続した画像から動画を作成するプログラムです。
詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
開発環境
・windows10
・Visual Studio 2015
・OpenCV3.2
サンプルプログラム (C++)
サンプルでは↓のような300回カウントアップしていくだけの動画が作成されます。
各自で画像を読み込むコードを追加していただければ、好きな画像を読み込んで動画にすることができます。
以下c++のサンプルコードです。
#include <opencv2/highgui.hpp> #include <iostream> #ifdef _DEBUG // Debugモード // OpecCVのライブラリの読み込み #pragma comment(lib,"opencv_core320d.lib") #pragma comment(lib,"opencv_highgui320d.lib") #pragma comment(lib,"opencv_imgproc320d.lib") #pragma comment(lib,"opencv_imgcodecs320d.lib") #pragma comment(lib,"opencv_videoio320d.lib") #else // Releaseモード // OpecCVのライブラリの読み込み #pragma comment(lib,"opencv_core320.lib") #pragma comment(lib,"opencv_highgui320.lib") #pragma comment(lib,"opencv_imgproc320.lib") #pragma comment(lib,"opencv_imgcodecs320.lib") #pragma comment(lib,"opencv_videoio320.lib") #endif int main() { // 幅320px-高さ240pxの画像を生成 cv::Mat img(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 0)); int fourcc = cv::VideoWriter::fourcc('X', 'V', 'I', 'D'); // コーデックを指定 double fps = 30.0; // 動画のフレームレートを指定 bool isColor = true; // カラーで保存するか否か int N = 300; // 動画にする画像の枚数を指定 char str[32]; // 出力する動画ファイルの設定 cv::VideoWriter writer("Sample_video.avi", fourcc, fps, img.size(), isColor); // 動画ファイルの初期化に成功したか判定 if (!writer.isOpened()) { std::cout << "Can't VideoWriter open" << std::endl; return -1; } for (int i = 0; i < N; i++) { // 画像に「OpenCV "画像番号"」の文字列を描画 cv::Mat dst = img.clone(); sprintf(str, "%d", i + 1); cv::putText(dst, "OpenCV", cv::Point(80, 100), cv::FONT_HERSHEY_SIMPLEX, 1.2, cv::Scalar(0, 200, 0), 2, CV_AA); cv::putText(dst, str, cv::Point(80, 150), cv::FONT_HERSHEY_SIMPLEX, 1.2, cv::Scalar(0, 200, 0), 2, CV_AA); // 入力画像を表示 cv::imshow("image", dst); cv::waitKey(1); // 動画ファイルに出力 writer << dst; } return -1; }
よく使うかもしれない線形代数まとめ
はじめに
線形代数学、それは大学で勉強はいろいろしてきましたが講義聞いてるだけでは何につかうの?って感じで全く頭に入っていなかったものです。ですが、研究をするようになって線形代数学の重要性を身にしてみ感じるようになりましたね。ほんとに単純な計算で躓いてしまうと開発速度が遅くなって仕方ないですよね…...。式が解ければ制御できるのに解き方がわからん!ってなって式を解くのに何時間もかけるのはもったいなく感じます。
なので、少しでも時間の節約になればと思い線形代数の計算式をメモ書き程度に載せておきます(あくまで自分用)。
まだ全然項目がありませんが、時間あるときに随時載せていく予定です。
ヤコビ行列(ヤコビアン)
ヤコビ行列(Jacobian matrix)って、要はベクトルをベクトルで微分したものですね。
ベクトル値関数
をベクトル
で微分すると、
\[ \frac{\partial f(x)}{\partial x} =
\left[ \begin{array} {rrr}
\frac{\partial f_1}{\partial x_1} & \ldots & \frac{\partial f_1}{\partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial x_1} & \ldots & \frac{\partial f_m}{\partial x_n}
\end{array} \right]
\]
となります。これがのに関するヤコビ行列(ヤコビアン)です。
<例題>
ベクトル値関数とベクトルが以下のように与えられた場合のヤコビ行列は?
\[ f(x) = \left[
\begin{array}{c}
x_1 \\
x_1^2+x_2 \\
x_1^3+x_2^2+x_3 \\
x_1^4+x_2^3+x_3^2+x_4
\end{array}
\right]
~~~~~~~
x = \left[
\begin{array}{c}
x_1 \\
x_2 \\
x_3 \\
x_4
\end{array}
\right]
\]
このときのヤコビ行列は以下のようになります。
\[ \frac{\partial f(x)}{\partial x} =
\left[ \begin{array} {rrrr}
1 & 0 & 0 & 0 \\
2x_1 & 1 & 0 & 0 \\
3x_2 & 2x_2 & 1 & 0 \\
4x_3 & 3x_3 & 2x_3 & 1
\end{array} \right]
\]
ヘッセ行列
ヘッセ行列(Hessian matrix)は、スカラ値関数をベクトルで二階微分したものですね。
ヘッセ行列を考えるにはまず勾配ベクトルを考えるとわかりやすいです。
スカラ値関数をベクトルで微分すると、
\[ \frac{\partial f(x)}{\partial x} = \left[ \frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n} \right]^T \]
となります。これが、のに関する勾配ベクトルです。
(ただし、上式は物理学で用いられる勾配ベクトルを表しています。)
それで、ヘッセ行列とは勾配ベクトルをさらにベクトルで微分したものなので、
\[ \frac{\partial^2 f(x)}{\partial x^2} =
\left[ \begin{array} {rrr}
\frac{\partial^2 f}{\partial x_1 \partial x_1} & \ldots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial^2 f}{\partial x_n \partial x_1} & \ldots & \frac{\partial^2 f}{\partial x_n \partial x_n}
\end{array} \right]
\]
となります。ベクトルをベクトルで微分するのは上述したヤコビ行列の導出でやっているので同様にして解けます。
参考となる資料:
- 作者: 大塚敏之
- 出版社/メーカー: コロナ社
- 発売日: 2011/01/26
- メディア: 単行本
- 購入: 1人 クリック: 5回
- この商品を含むブログを見る
MATLABで音源を利用してみる
MATLABに任意の音源ファイルを読み込んで再生したいなんて時のメモです。
コードはこんな感じで書けばオッケーです!
% 音源ファイルの読み込みと再生 Volume = 0.1; % 音量調整(オリジナル音源振幅に対する倍率) [y,Fs] = audioread('<ファイル名>. <拡張子>'); % 読み込み player = audioplayer(y*Volume,Fs); % 再生オブジェクトの生成 play(player); % 再生(これだけだと最初から最後まで再生され途中で終了できません) pause(5); % 5秒再生 pause(player); % 一時停止 pause(2); % 2秒停止 resume(player); % 一時停止した時点から再生を開始 pause(5); % 5秒再生 stop(player); % 再生の停止
ちなみに、
サポートしているファイル形式はここに載っています。
オーディオ ファイルの読み取り - MATLAB audioread - MathWorks 日本
VisualC++でOpenMPを使ってみる
OpenMPとはマルチコアCPUによるメモリ共有型の並列化を簡単に実装できる並列化技術です。
開発環境
Visual Studio 2015 c++
Windows 10 Home
Intel Core i7-6700K
初めてのOpenMP
まず最初に新規プロジェクトで空のアプリケーションを作って、以下のソースを実行してみましょう。
この例では、OpenMPの実行時ライブラリを使用しないので、インクルードする必要はありませんが、後々使うので一応インクルードしています。
#include <omp.h> #include <stdio.h> int main() { #pragma omp parallel printf("Hello OpenMP!\n"); return 0; }