2019-01-01から1年間の記事一覧

Direct3D 11(DirectX 11) の Constant Buffer のバッファサイズは16の倍数にしなければならない

試した環境 Windows10 本題 Direct3D 11 のシェーダーで定数を扱う際に用意する Constant Buffer ですが、 このバッファサイズは16の倍数にしなければなりません。 このことは D3D11_BUFFER_DESC 構造体のリファレンスページに載っています。 D3D11_BUFFER_D…

ファイル分割でファイル名を指定するのに便利な split コマンドのオプション【bash】

試した環境 Windows 10 Git 2.24.0.2 の Git Bash 本題 ファイル分割する際、ファイル名のつけ方で色々な要望があると思います。 私がファイル名のつけ方でやりたかったことが bash のsplitコマンドのオプションに用意されておりました。 その機能を紹介しま…

平成31年度大学入試センター試験(追・再試験)を解いた

はじめに 去年もやりましたが、来年の1月のセンター試験に向けて勉強しようと思います。 そこで現在の学力を測るため今年の問題を解きました。 平成31年度センター試験本試は今年の1月に解きましたので、今回は追試を解きました。 問題は以下のページから取…

cv::remap で用いる固定小数点マップ(整数型マップ)で参照される補間係数テーブルの在り処と生成タイミングについて【OpenCV】

確認した環境 OpenCV4.1.1 Windows10 Visual Studio Community 2019 Version 16.3.7 はじめに OpenCV には汎用的な幾何変換を行う cv::remap 関数があります。 この関数では変換情報を表す cv::Mat 型のマップ情報を使用します。 マップ情報は大きく分けて浮…

std::thread で純粋仮想関数を指定する

C++

確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 前回の記事で std::thread にメンバー関数を渡すときについて書きましたが、 純粋仮想関数の場合を確認していなかったので今回確認します。 コードは以下の通りです。 class BaseC…

std::thread で実行するメンバ関数が static かそうでないかでの書き方の違い

C++

確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 std::thread の1番目の引数にクラスのメンバ関数を渡すとき、 そのメンバ関数が static かそうでないかで書き方が異なります。 static でないメンバ関数では2番目の引数に this を…

デフォルトムーブコンストラクタでムーブした時の基本型メンバ変数の挙動を確認する【C++】

C++

確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 C++ のムーブコンストラクタはデフォルトが用意されていますが、 int などの基本型がどのようになるのかを実際に動かして確認しました。 ムーブコンストラクタがちゃんと呼ばれて…

キーフレームの間隔は force_key_frames で設定する【FFmpeg】

はじめに 前回の記事を書いた後で、force_key_frames を設定する方法を知ったので、それについて書きます。 ちなみに、前回の記事はこちらです。 確認した環境 ffmpeg 4.2 本題 force_key_framesによるキーフレームの設定では式(expression)を使って詳細に指…

キーフレームの間隔が x264-params の keyint で設定した値にならないときは min-keyint を設定してみる【FFmpeg】

確認した環境 ffmpeg 4.2 本題 H.264形式の動画を生成するときにキーフレームの間隔を指定したいときがあるかもしれません。 (例えばストリーミング再生用に変換する際に、セグメントの秒数を指定したいときなど) その場合、以下のようにx264-paramsのkeyi…

OpenMP にて使用するスレッド数を指定する2つの方法とその違い

C++

確認した環境 Windows10 Visual Studio Community 2015 Update 3 CPU Intel(R) Core(TM) i7-4790 コア数4、論理プロセッサ数8 使用するスレッド数を指定する2つの方法 forループ内の処理を並列で処理したい場合、 OpenMP が有効になっていれば#pragma omp pa…

「切り取り&スケッチ」と「Win + Shift + S」との違いについて

環境 Windows10 バージョン1903 本題 Windows10 をバージョン1903にアップデートした後で Snipping Tool (画面キャプチャアプリ)を起動したところの以下ように表示されたのに気づきました。(この表示は以前のバージョンからあったみたいです) Snipping T…

Git Bash を使ってプログラムを並列で実行したときの処理時間を測定する

はじめに プログラムを並列実行したいとき、コマンドプロンプトではstartコマンドがあります。 しかしstartで実行した処理の終了を捕捉するのは簡単にはできないと思います。 (私が知らないだけかもしれませんが。) そうなると、並列実行した時のすべての…

最大値255の PGM バイナリ形式の画像を読み込む(OpenCV)

はじめに この記事では、最大値255のPGM バイナリ(PNM P5)形式の画像を cv::Matに読み込むコードを載せております。 しかし OpenCV はcv::imreadで上記の形式に限らず PNM 形式を読み込めますので、 本来このような処理を自分で書く必要はありません。 所謂…

符号付き整数の負の値を符号なし整数にキャストした時の値

C++

気になったので Wandbox で調べました。 int main() { int32_t s = -1; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 4294967295 } int main() { int32_t s = -2; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 42949672</uint32_t></uint32_t>…

OpenCV の const cv::Mat の中身を書き換える方法

はじめに この記事では const cv::Mat を書き換える方法を示しますが、 const cv::Mat の書き換えを推奨する意図はございません。 cv::Mat に限らず const が付いた変数は基本的に書き換えるべきでは無いと思っています。 この記事は OpenCV に慣れていない…

1年間ブログを続けてみて

アクセス数と投稿数について 1年間ブログを続けたらどのくらいのアクセスになるのか気になる人もいるかもしれない。 少なくともブログを始める前の私は興味があったので記す。 2019/06/02時点で以下の通りだった。 アクセス(合計) 1100 投稿数 42 はてなブ…

Draco の status.h より先に windows.h を include するとエラーになる

C++

環境 Microsoft Visual C++ 2015 Draco 1.3.5 本題 Draco の status.h には、ERRORという列挙子が定義されています。 一方、windows.h 内で include している wingdi.h には、以下のようにERRORが define されています。 #define ERROR 0 そのため、 status.…

Twitter アカウントを作成しました

twitter.com どの程度使用するか分かりませんが、Twitter アカウントを作成しました。 よろしくお願いいたします。

reinterpret_cast は参照に対しても使用できる【C++】

C++

reinterpret_cast はポインタの型変換を行うという説明をよく目にします。 しかし、それだけではなく参照のキャストも行えるということをメモしておきます。 コード #include <iostream> struct Point { int x; int y; }; struct Size { int width; int height; int ar</iostream>…

Git でブランチの途中のコミットからマージする

環境 Git v2.21.0 本題 やりたいことが言葉で伝わりにくいので、図にしました。 上図のように、ブランチBの先頭ではないコミットをブランチAにマージしたい場合、 以下のようにします。 git chekout A git merge --no-ff <コミットのハッシュ> <コミットのハ…

vcpkg のvulkan パッケージからVulkan SDK をインストールできるわけでは無い

C++

環境 Windows 10 vcpkg 2018.11.23-nohash 本題 Vulkan プログラミングの環境を構築しようと構築手順を説明している記事を読んでいると、 Vulkan SDK を以下のページからダウンロードしてインストールするように書いてあります。 https://vulkan.lunarg.com/…

英語でシャドーイングをするためにまず日本語でシャドーイングをする

はじめに 英語のトレーニングとしてシャドーイングは有名ですが、 私が初めてシャドーイングを実践した時は全くできませんでした。 その時の印象が以下の通りです。 聞いたそばから抜けてしまう 自分の発した声で音声が混ざって聞き取れない これらの点から…

vcpkg でzlib のビルドに失敗する現象とその解決策

C++

環境 Windows 10 Microsoft Visual Studio Community 2015 Update 3 vcpkg 2018.11.23-nohash 現象 私の環境では、vcpkg によるzlib のビルドが上手くいきませんでした。 コンソールの出力は以下のものでした。 $ vcpkg install zlib:x64-windows The follow…

Pillow のImage.convert メソッドによる二値化処理の境界を調べる

はじめに、以前書いた記事を引用します。 一方、Pillow のbilevel におけるconvert の説明によると、 If dither is NONE, all values larger than 128 are set to 255 (white), all other values to 0 (black). とあるので、128の値を持つピクセルは0になる…

2次元の連番ファイルから一部の範囲のファイルを指定する(Windows 環境)

以下のような連番ファイルが1つのディレクトリ内に存在すると想定します。 00_0000.jpg ... 00_0089.jpg 01_0000.jpg ... 01_0089.jpg : 29_0000.jpg ... 29_0089.jpg 上記の2700ファイルような2つの連番がついたファイルをここでは2次元の連番ファイルと呼…

Pillow と OpenCV とでそれぞれ二値画像処理および膨張処理

Pillow でOpenCV の膨張処理とを同じ処理がしたかったので、 その方法と処理結果が等しくなるか確認しました。 環境 python 3.5.6 opencv 3.4.2 pillow 5.2.0 コード全体 先に今回書いたコードを載せます。 # -*- coding: utf-8 -*- import cv2 import numpy…

高校の国語便覧を高校時代よりも重宝している

漢文の勉強で大いに役立ったのが、高校時代に使用していた国語便覧でした。 国語便覧には漢文の基本的な読み方や主要な句法が載っており、 ここに載っている基礎知識だけでもセンターの漢文は十分カバーできました。 古文についても文語文法や重要古語など基…

平成31年度大学入試センター試験問題を解いた

昨日実施されたセンター試験1日目の問題を解きました。 ちなみに2か月前に平成30年度の試験問題に挑んだ時の記事はこちらです。 kakashibata.hatenablog.jp 問題 問題は朝日新聞デジタルで公開されていたものを使用しました。 www.asahi.com 結果 解いたのは…