とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

C言語

【C++】MinGW (g++)とCMakeでOpenCVとopencv-contributeをビルドする(Windows)

バージョン はじめに ビルド方法 HelloWorld HelloWorld実行 バージョン $ cmake --version cmake version 3.17.2 $ make -v GNU Make 3.81 $ mingw32-make -v GNU Make 4.2.1 $ g++ -v gcc version 8.1.0 はじめに タイトルの通りです。開発環境がVisual St…

【C++/MinGW】FreeTypeを使ってTTFファイルから文字レンダリング

FreeTypeとは? FreeTypeのインストール サンプルコード 実行結果 FreeTypeの使い方 初期化 太字or斜体に設定する レンダリング(方法1) レンダリング(方法2) FreeTypeとは? FreeTypeはフォントエンジンを実装したライブラリです。つまり、std::stringと…

【OpenCV/C++】画像の一部分を修復する(cv::inpaint)

今回すること OpenCVを用いて画像の一部を修復します。例えば、下の画像の様に、電線だけ消す、というようなことができます。(下の方は失敗していますが、一番上4本の電線はかなりきれいに消えていると思います) このような画像修復を行うために、cv::inpa…

【OpenCV/C++】GrabCutで対話的な前景抽出を行う(AEのロトブラシの画像版)

この記事では、 ↑画像を、 ↑こんな風にするエフェクトをC++で作っていきます。Rotoscoping、AEで言うところのRotobrush、日本語だと前景抽出とかセグメンテーションとかそういう類の技術です。 実装方法 細かいことを言うと、セグメンテーションのアルゴリズ…

【OpenCV/C++】OpenCVでトーンカーブっぽいものを実装する

タイトルの通りです。今回作ってみるのはこれです。 右側の画面の2つの黄色の円を動かすことで、画像の色調補正を行うことができるプログラムです。 右側の画面の白色の曲線が補正の値を表していて、横軸が入力値(RGBそれぞれ)、縦軸が出力値となります。 …

【C++/OpenCV】OpenCVでピクセルソート!

ピクセルソートとは AfterEffectとかAviUtlの中の数あるエフェクトの中でも気に入っているのがPixelSortです。(AviUtlの場合はAodaruma様の外部スクリプトを導入する必要があります) (AviUtlでのPixelSortの例) その名の通り、画像の「ピクセル」を「ソ…

【C++/OpenGL】インスタンス化を用いてパーティクル出力

にゃんぱすー。お久しぶりです。期末テストが終わって夏休みに入ったのでブログを再開しようかなぁと考えているところです。 プログラム 実行結果 解説 インスタンス化 データ共有によるメモリ削減(glVertexAttribDivisor) パーティクルのシミュレーション…

【C++】UDP通信を実装する(Windows/Linux環境)

UDP通信について この記事ですること プログラム(送信側) プログラム(受信側) 実行結果 解説(送信側) 初期化 【補足】ポート番号について データ送信 タイムアウト時間設定 解説(受信側) 初期化 データ受信 recv関数 recvfrom関数 ノンブロッキング…

【C++】OpenGLで描画したものをOpenCVのMatに変換

すること サンプルプログラム 実行結果 解説 オフスクリーンレンダリング レンダリングしたデータを取得 すること shizenkarasuzon.hatenablog.com 少し前に、OpenGLを使って四角形を表示するプログラムを書きました。この記事ではOpenGLでレンダリングを行…

【C++/OpenCV】スクリーンキャプチャした映像を表示 or 動画ファイルとして保存

タイトルの通りです。 C++を使ってスクリーンキャプチャを行います。 プログラム1(キャプチャ映像表示) 実行結果1 プログラム2(キャプチャした映像をmp4で保存) 実行結果2 参考文献 ちなみに、Python版は↓です。 shizenkarasuzon.hatenablog.com ではま…

【C++/OpenGL】NO.8 ASCII文字をテクスチャを使って描画

前回の記事で、配列からテクスチャを生成し(≧▽≦)マークを描画する、という事をしました。 shizenkarasuzon.hatenablog.com 今回は、これを使って文字列を描画してみます。 準備(配列作成) サンプルプログラム 実行結果 解説 準備(配列作成) 文字をテクス…

【C++】Tips集

変数名とその値を標準出力 ベクトルたち std::vector自作 WinMainのプログラムでもコンソール出力を可能にする 関数マクロ スピーカーの音量変更 マイクの入力レベル変更 変数名とその値を標準出力 define disp(A) (std::cout << #A << " = " << A << "\n") …

【C++】OpenCV標準のスライダーを使用する

環境構築 サンプルプログラム 実行結果 環境構築 shizenkarasuzon.hatenablog.com サンプルプログラム # include <opencv2/opencv.hpp> # include <opencv2/highgui.hpp> # include <iostream> #define ESCAPE_KEY 27 void do_nothing(int size, void*){} void main() { cv::Mat img = cv::imread("C:/Users/Owne</iostream></opencv2/highgui.hpp></opencv2/opencv.hpp>…

【C++ Win32】Windowsアプリケーションを作る!(Win32 APIシリーズ第一回)

1.CUIとGUI 開発環境 実際に作ってみる プロジェクトの作成 プログラム 実行結果 解説 Windows Applicationの基本動作 Windowクラスの登録(RegisterClassEx関数とWNDCLASSEX構造体) hInstance style hbrBackground hIconとhIconSm Windowの作成(CreateWin…

【C++】Visual Studio 2019 に OpenSiv3D を導入する

OpenSiv3Dとは 開発環境(この記事) 開発環境(必要最低限) Visual StudioにC++の開発環境を整える Siv3Dの導入 開発環境を整える サンプルプロジェクトを作成→実行 参考文献 OpenSiv3Dとは OpenSiv3Dとは、C++ で楽しく簡単にゲームやメディアアートを作…

【C言語】NO.7 条件式

いきなりですが、 「ポプテピピックはくそアニメである」は真ですね。...真...ですよね。 「ポプコは小学生である」これは偽ですね。 このように、真偽を判定する式を「条件式」といいます。*1C言語では、上の二つの条件式は次のように書きます。 "ポプテピ…

【C言語】NO.7 関数

関数は、よく自動販売機にたとえられます。例えば、こんな感じ。 自動販売機には、入力と出力があります。入力は「購入者が入れたお金」と、「選んだジュースのボタンを押すという動作」です。一方、出力は勿論「ジュース」と「おつり」です。私たちは自動販…

【C言語】NO.12 #define と #include

いままで多くのプログラムを書いてきましたが、だれもが一度は、 #include や #define という単語を見たことがあるはずです。今日は、この2つについてブログを書いてみました。 1. #includeの使い方 (1)#include構文の使い方 コラム 2.#define構文 (2)#def…

【C言語】NO.8 変数の寿命

変数には寿命があります。もう少し正確に言うと、関数の中に定義されている変数には寿命があります。 1.変数の寿命 2.解決策 (1)「static」というキーワード (2)変数を宣言する位置を変更する 1.変数の寿命 下のプログラムを見てください。 int add(int)…

【C言語】NO.5 printf() の使い方 ver.2

今回は、printf()関数の様々な使い方を紹介していきます。 STEP1 文字列を出力する STEP2 文字列を工夫して表示する STEP3 変数のデータを表示する STEP4 STEP3の書き方を進化させる。 STEP1 文字列を出力する もちろん、printf()関数は、かっこの中の文字列…

【C言語】NO.3 基本事項➀、printf()関数

では、早速Cについて紹介していきます 1.猫でもわかる基礎の基礎 2.セミコロン 3.コメント コメントの書き方: 4.printf()関数 ~改行の仕方~ 5.文字列 1.猫でもわかる基礎の基礎 まず、プログラムを、こんな風に書いていくと、 #include "stdafx.h" int ma…

【C言語】NO.2 プロジェクトの作成からビルドまで(VisualStudio)

C言語の基礎を連載していきます。この記事が第一回目です。 C言語とは? VisualStudio とは VisualStudioのインストール プロジェクトの作成 プログラムを書く 2.ビルド 3.プログラムの実行 C言語とは? C言語とは、プログラミング言語のひとつです。ほかの…

【C言語】NO.1 VisualStudio のインストール

VisualStudio とは Visual Studio Community Visual Studio Professional Visual Studio Test Professional Visual Studio Code Visual Studio Enterprise 公式ホームページによる VisualStudio の説明 VisualStudioをインストール 1.ダウンロード 2.パッケ…