とある科学の備忘録

とある科学の備忘録

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

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

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

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

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

【M5Stack】第8回 シリアル通信 全集

PCとM5StackをUSBで接続して、シリアル通信を行ってみます サンプルプログラム 実行方法 実行結果 解説 シリアル通信について 初期化 送信(M5Stack→PC) 文字列送信 数値送信(n進数) 数値送信(桁数指定) uint8_t型のデータを1バイト送信 uint8_t型のデ…

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

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

【C++】Tips集

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

【C++/OpenGL】NO.7 OpenCVのcv::MatをOpenGLのテクスチャに変換する

内容 結論 サンプルプログラム 実行結果 内容 タイトルの通りです。 OpenCV(画像処理ライブラリ)のcv::Mat型の画像データをOpenGLのテクスチャに変換します。 結論 cv::Mat型において、実際の画像データが格納されている場所は、img.ptr()で知ることができ…

【C++/OpenGL】NO.5 透明度付きテクスチャの表示(GLbyte配列から生成)

この記事の内容 プログラム 実行結果 解説 アルファテクスチャを描画する時の設定 この記事の内容 前回の記事では、画像ファイル(rawファイル)を読み込んでテクスチャとして表示してみました。前回の記事↓ shizenkarasuzon.hatenablog.com 今回は、raw画像…

【M5Stack】第7回 WiFiを使ってPC→M5Stackにデータ送信

今度は、前回の記事の逆に、PCからM5Stackへデータを送ってみます。 プログラム(M5Stack) プログラム(PC側、C++) プログラム(PC側、Python) 実行結果 解説 プログラム(M5Stack) #include <WiFi.h> #include <WiFiUDP.h> #include <M5Stack.h> // arp -aでIPアドレスをすべて取得 //</m5stack.h></wifiudp.h></wifi.h>…

【M5Stack】第6回 WiFiを使ってM5Stack→PCにデータ送信

すること プログラム(M5Stack) プログラム(PC側、C++) プログラム(PC側、Python) 準備 自身のPCのIPアドレスを知る M5StackのIPアドレスを知る 実行結果 解説 WiFiに接続 UDP通信の設定 データ送信 すること タイトルの通りです。M5StackはWiFiモジュ…

【C++/OpenGL】NO.6 Win32 APIを利用して文字の表示(日本語OK!)

前書き プログラム 実行結果 解説 参考文献 前書き freeglutを使って文字の表示をすることもできますが、freeglutを使うには勿論freeGLUTを#includeする必要が出てきます。ですが、そうすると、同時にGLFWをインクルードできないので、メインループやイベン…

【C++/OpenGL】NO.5 テクスチャの表示(RAWファイルから)

プログラム .rawファイル作成 実行結果 以下、解説 UV座標について 全体的な流れ テクスチャの有効化 テクスチャの生成 テクスチャの作成 テクスチャに画像を割り当てる ラッピング フィルタ 画像を拡大するときに使えるフィルタ 画像を縮小するときに使える…

【C++/OpenGL】NO.4 行列を使って、図形を移動・回転させ、ピクセル座標→同軸座標の変換も行う!

タイトルが長ぇよ はじめに プログラム1(回転) 実行結果 解説 行列の考え方 そのまま 拡大縮小 移動 反転 回転 座標変換(左上原点ピクセル座標→中央原点同軸座標) プログラム2(ピクセル座標→同軸座標) 実行結果 はじめに 行列を使うことで、図形を回転…

【C++ Win32】キーボ―ド入力のすべて

サンプルプログラム 実行結果 解説 WndProc()を使って処理する方法 WM_CHARとWM_KEYUP(WM_KEYDOWN)の違い WM_CHARメッセージ WM_KEYDOWN(UP)メッセージ 特定のキーが押されたかをチェック サンプルプログラム #include <windows.h> LRESULT CALLBACK WndProc(HWND, </windows.h>…

【C++/Win32 API】ステータスバーの作成

サンプルプログラム 実行結果 ステータスバーを作成 ステータスバーの設定 ステータスバーの表示文字列を変える サンプルプログラム ステータスバーを作成し、そこに表示する文字を変更するプログラムです。 右クリックすると「right button click!」、左ク…

【C++/OpenGL】NO.4 イベント処理(Callback関数)一覧

プログラム 実行結果 解説 プログラム サンプルプログラムです。このプログラムにイベント処理の内容を付け加えただけです #include <GL/glew.h> #include <GLFW/glfw3.h> #include <Windows.h> #include <stdio.h> #include <iostream> GLint makeShader() { const char* vertex_shader = "#version 400\n" "in vec3</iostream></stdio.h></windows.h></glfw/glfw3.h></gl/glew.h>…

【C++/OpenGL】NO.3  複数の四角形表示

このページの内容 プログラム 実行結果 解説 複数のポリゴンを描画する 変更点1(GLfloat points[]) 変更点2(GLfloat colors[]) 変更点3(VBOのサイズ変更) 変更点4(glDrawArrays関数) 実行結果 このページの内容 前回はもっとも簡単なプログラムで三…

【C++/OpenGL】NO.2 プログラムの書き方編➀

前回のプログラム(緑色の三角形を表示するやつ)の解説その1です。 プログラム全文は前回の記事を見てください。 shizenkarasuzon.hatenablog.com OpenGLでポリゴンを表示するには以下のような手順が必要です GLFWとGLEW(またはGLAD)の初期設定 Windowの生…

【M5Stack】第5回 光センサーを使う→GPIOの使い方

M5Stackのライトセンサーユニットについて サンプルプログラム 実行結果 解説 GPIOの絶対最大定格などを調べる 初期設定 デジタル出力 アナログ出力 デジタル入力 アナログ入力 M5Stackのライトセンサーユニットについて 今回使うのは、これです↓ CdS(明る…

【C++/OpenGL】NO.1 OpenGLの仕組みと三角形表示

OpenGLとは OpenGLの仕組み(適当に解説) VBOとVAO 頂点シェーダ(Vertex Shader) フラグメントシェーダ(Fragment Shader) ラスタライズ スワップバッファ 深度バッファ OpenGLの座標の考え方 ViewPortとシザー矩形 GLSLとは プログラム 実行結果 OpenGLと…

【M5Stack】第7回 ToFセンサを使って物体との距離[mm]を計測

ToFセンサーとは TOFとは「Time Of Flight」の頭文字で、センサからパルス投光されたレーザがセンサ内の受光素子に戻ってくるまでの時間を計測し、その時間を距離に換算する測定方式です。 (https://www.optex-fa.jp/tech_guide/tof_special/ より) この記事…

【M5Stack】第4回 M5Stack Fire内蔵のIMU(MPU6886)を使って姿勢角算出

このブログでは姿勢角算出プログラムは4記事目です。【Arduino】MPU-6050を使って姿勢角を算出 (フィルターなし) - とある科学の備忘録【Raspberry Pi】MPU-6050を使って姿勢角算出(C言語編) - とある科学の備忘録 【Raspberry Pi】MPU-6050を使って姿勢…

【M5Stack】第3回 LCD下部のボタンの状態を取得する

この記事の内容 サンプルプログラム 実行結果 解説 ボタンの配線 この記事の内容 M5StackにはLCDの下に3つのボタンがあります。それぞれ左からBtnA、BtnB、BtnCという風にプログラムでは使います。 この記事では、この3つのボタンの状態を取得するプログラム…

【M5Stack】第二回 LCDの使い方 全集

LCDについて サンプルプログラム 実行結果 解説 LCDについて 事前準備 テキスト表示 日本語表示 図形を表示 指定の色でLCDを塗りつぶす ピクセル操作 四角形 三角形 円 線 QRコード作成 プログレスバー作成 色について 参考文献 LCDについて M5Stackには表面…

M5Stack Fire等開封→Arduino IDE環境構築→Hello World!

ひっさしぶりの投稿です!!!!! M5Stackが届いた! 中身一覧 M5Stack Fire (本体) UnitV ToFセンサー 光センサ(CdS) BALA(モーター&エンコーダー) ボタンスイッチ セットアップ USBドライバーのインストール Arduino IDEの設定 ボードマネージャの設…

【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++ dear ImGui】ドッキングパネルを作る

プロジェクト作成 実行結果 参考文献 C++のGUIフレームワークの一つである dear ImGUi を使ってドッキングパネルを作ります。自分用のメモとして書いています。ImGuiの通常のプロジェクト作成はこちら: shizenkarasuzon.hatenablog.com プロジェクト作成 ド…

【SQL】SQLのすすめ(Pythonのsqlite3使用)

SQLとMySQLとSQLiteとRDBMSについて サンプルプログラム 実行結果 基本操作 テーブルを作成 テーブルを削除する テーブルに要素を挿入する テーブルの要素を全て削除する 条件に合う要素を削除する 全ての要素を順番に取り出す 特定の要素を順番に取り出す …

【Python】スクリーンキャプチャ(mp4, avi, gif出力)

説明 タイトルの通りです。選択した範囲をスクリーンキャプチャして、動画ファイル(mp4, avi, gif)として出力します。 プログラムを起動すると、まず現在の画面をキャプチャしたWindowが現れるので、マウスをドラッグして録画領域を選択します。 ドラッグ…

【Python】Excelの表をはてな記法に変換するPythonスクリプト

タイトルの通り、Excelの表(複数の表もOK)をはてな記法の表( | と |* を使ったやつ)に変換するPythonプログラムを書いてみました。 二重for文をぶん回しているところもあって拙いコードですが......m(__)m プログラム 実行 プログラム import openpyxl a…

【C++ Win32】ファイルのドラッグ&ドロップ

ファイル(複数の場合もある)を Drag & Drop することで、そのファイルを取り込む機能(正確には Drag & Drop されたファイルのpathを取得する機能)を作ります サンプルプログラム 実行結果 サンプルプログラム ファイルが Drag & Drop されると、その場所…