とある科学の備忘録

とある科学の備忘録

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

【Raspberry Pi 3B】で自宅サーバー構築 Debianのインストール

めちゃくちゃ前(2019年)の話ですが、Raspberry Pi Model 3Bを買っていました: 今回から数回の記事にわたって、Raspberry Pi Model 3Bを使ってサーバー環境を構築しようと思っています。最終形態としては以下の様なものを想定しています OSはDebian 10 bus…

【お知らせ】 New Video!

AviUtlで個人的に動画編集を行ってきましたが、その完成作品の一部を紹介します~~。編集全部僕のやつと他の人との共同製作」のものがあります。 Adobe製品ほしい~~、けど高い~~。 久しぶりにまじめに動画編集しました。 みてください!!!! www.yout…

【Ubuntu】MongoDBをインストール + Node.jsでDB操作

MongoDBはNoSQLと呼ばれるデータベースの一種です。 RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理します。 www.mongodb.…

【Ubuntu】Node.jsのインストールと使い方

UbuntuでNode.jsサーバーを動かしてみます。動作環境はこちら: Node.jsとは 環境構築とバージョン確認 Hello World() Hello World(express編) gitignoreの書き方 参考サイト: Node.jsとは JavaScriptを用いたサーバーサイドの実行環境です。 Chrome's V8 J…

【Node.js + Express】WebSocketを使ってみる( + 全クライアントに一斉送信)

解説が面倒なのでサンプルだけ。 サンプル1 WebSocketを使ったNode.jsのサンプルです。 動作は 送信ボタンを押すと、WebSocketを使ってサーバーに「Hello」文字列が送信されます。 サーバーのコンソールにWebSocketで受信した文字列(Hello)が表示され、ク…

【Ubuntu】React Nativeの環境構築 →WebとAndroidでHello World!

Cross Platformなフレームワーク ionic React Native Xamarin Flutter Unity Google Trendによるトレンド React Nativeの環境構築 バージョン確認 プロジェクト作成 デバッグ Android実機デバッグ Webブラウザでデバッグ VSCodeでデバッグ 参考 Cross Platfo…

【Linux】Ubuntuの不要ファイルを徹底的に削除する

Ubuntuで色々やっていると、だんだんSSDの容量を圧迫してきました。 512GBしかないSSDをWindows用とよく使う動画データ用とUbuntu用で3つにパーティション分割している上に、WindowsパーティションにSolidworksやらFusionやらInventerやらUnityやら重たいソ…

YouTubeに有料の素材を使った動画をアップする(Envato Market / audiojungle)

先日、サークルの新歓PVで↓の様な動画を作りました。www.youtube.com この動画にはBGMにaudiojungleの有料素材を使っているのですが、その場合はYouTubeに「正規のサイトから購入したから著作権問題は大丈夫だよ!」という事を伝える必要があります。この記…

【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と…

【Python】無料でジオコーディング(住所→緯度経度etc.)

住所⇔緯度&経度の変換をしたい、目的地までのルート検索や所要時間を調べたい、と思い良いものがないかなぁと思っていました。 すると、↓の記事でGoogle Maps APIというものがあることを知り、 qiita.com使ってみよ~~、と思ったのですが、なんと有料でし…

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

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

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

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

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

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

【Arduino&Pmod NAV】地磁気センサからヨー軸算出

前書き 加速度センサとジャイロセンサを使って姿勢角を算出するのは、以前に複数個の記事で行っています。 shizenkarasuzon.hatenablog.com shizenkarasuzon.hatenablog.com ですが、今回は地磁気センサを使って姿勢角(ヨー角のみ)を算出してみようと思い…

Pythonでイージングを試してみる

イージングとは イージング(Easing)は日本語では緩急を意味します。 うえの動画の様に動きに緩急をつけることで、より自然で滑らかに表現ができるようになります。 (イーズイン)ease in → 最初はゆっくり、最後は高速。 (イーズアウト)ease out → 最初…

【OpenCV/C++】画像に3DLUTをあてる(適応させる)プログラム!(立方体補正)

LUTとは 1DLUTと3DLUT LUTファイルの拡張子 LUTの格子点 立方体補間 プログラム(補間なし) 実行結果(補間なし) プログラム(補間あり) 実行結果(補間あり) LUTとは LUT(Lookup Table、ルックアップテーブル)とは、 複雑な計算処理を単純な配列の参照…

【動画編集】無料で動画編集を始めようという人へ➀ 必要なもの

これから動画編集を始めよう、という人に向けたアドバイスを書いていきます。私自身、まだ動画編集は初心者なので、間違ったことを書いていたらごめんなさいこの記事に書いてあるソフトウェア、素材はすべて無料で手に入るものです。有難いーー!! 必要な機…

【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 ではま…

【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モジュ…