chevron_left

メインカテゴリーを選択しなおす

cancel
勉強しないとな〜blog
フォロー
住所
未設定
出身
未設定
ブログ村参加

2021/04/22

arrow_drop_down
  • OAK-D S2進める - 手検出サンプル2

    前回の続き。 nokixa.hatenablog.com やったこと 環境 実施 モデル変更 BPF使用 モデル変更&BPF使用 ここまで やったこと 前回のhand_trackerのサンプルで、OAK-Dデバイスでなく動画ファイルを入力にできるとのことで、試した。 内部でMediaPipeが使用されているので、普通にMediaPipeを使うのでもいいかもしれないが、こちらではBPF(Body Pre Focusing)が用意されているので、結果が良くなるかもしれない。 前のピアノ弾いてる動画で。 環境 前回と同じGitHubリポジトリで。 github.com 前回下記のようにクローンしたも…

  • <備忘録>HTMLで折り畳みコンテンツ

    折り畳みコンテンツの作り方、何回か使って、以前のブログ記事にも載せたが、記事の中に埋もれてしまって、少し探してしまったので、今後すぐ参照できるように。 書き方 <details> <summary> クリックで開く/閉じる </summary> コンテンツ </details> detailsとsummaryどっちが外側だったか、内側だったか、すぐ忘れてしまう。 HTML5から登場したもののよう。 IEでは対応していないらしい。 detailsとsummaryタグでアコーディオンを作る - HTMLリファレンス とりあえずはてなブログのMarkdownモードで書いてる限りは、これで動いてる。 …

  • OAK-D S2進める - 手検出のサンプル

    また続き。 ユースケース 最初のステップの次として、HelloWorldのほかに書かれているのが、ユースケース例。 DepthAI’s Documentation — DepthAI documentation Luxonis これを見ると、Hand Trackingのサンプルが出ていたので、これをやってみたい。 Hand Tracking 上記のTry Nowをクリックすると、GitHubのページに飛ぶ。 github.com これを読んでみた感じ。 GoogleのMediaPipeのHand Trackingのモデルを使っている。 Body Pre Focusingという機能を入れてい…

  • OAK-D S2進める - HelloWorld

    OAK-D S2の続き。 Hello World GitHubリポジトリクローン 環境作成 実行 ここまで Hello World 公式ドキュメントを見ると、デモアプリを動かしてみた次のステップとして、HelloWorldプロジェクトでコーディングしてみよう、というのがある。 Hello World — DepthAI documentation Luxonis コーディングのしかたは、読んでみて、そういう感じかー、と。 これを実行してみた。 GitHubリポジトリクローン リポジトリはここにあるので、これをクローンする。 github.com git clone https://gith…

  • OAD-D S2進める - USBケーブル

    去年の10月に買ってから全然進んでいなかったので。 今回はUSBケーブルの件について。 nokixa.hatenablog.com 概要 OAK-D S2では7.5Wの電力が必要だったが、今使っているPCのUSB3.0 Type-Aポートでは供給不可能だったので、 Thunderboltのポート(コネクタ自体はType-C)に接続する必要があった。 それに使えそうなType-C - Type-Cのケーブルを去年の11月のブラックフライデーのとき、Amazonで購入した。 Amazon.co.jp: RAMPOW USB-C & USB-C ケーブル【100W PD対応/USB 3.2 Gen …

  • 姿勢推定アルゴリズム調べ

    姿勢推定に今までOpenPose、MediaPipe、YOLOv8を使ってきたが、他にも色々あるようなので整理してみる。 2024年2月現在調べたところで。 まだ調べ切れていないかも。 フリーで使えるもの(とは言えライセンスの制約あり)と、商用のものに分けてみる。 個人で使いたいので、後者はあんまり関心ないが、一応リストしておく。 フリーのもの OpenPose AlphaPose HRNet YOLO MediaPipe 商用 VisionPose AsillaPose Pose Proposal Network (PPN) Actlyzer 以上 フリーのもの OpenPose GitHu…

  • 楽天証券状況

    金曜から値動きし始めたばっかりだが、早速上がってる。嬉しい。 米国株式・・・5000円入れて+122円(+2.44%) 国内株式・・・2000円入れて+19円(+0.95%) 米国株式のほうがいい感じ? まだ数日しか見てないからなんとも言えないか。

  • 楽天証券でなんかやってみる

    楽天証券と、NISA口座の設定ができたので、とりあえず商品購入とか積立設定とかしてみる。 らくらく投資 楽天証券さんがらくらく投資というのを用意してくれてるので、やってみる。 投資がよくわかってないし、なんとなく調べてみても頭に入ってこないので、とにかくやってみるのがいいだろうと思う。 らくらく投資で、まずいくつか質問されて、おすすめコース診断してくれるが、一番冒険的な、がっちりコースになった。 楽天証券さん的にはそっちに寄せようとするのか。 NISAつみたて投資枠で、毎月1000円にしておいた。 設定したが、2月中頃に審査?とかがあって、最初にお金を出すのが3月頭になるとのこと。ちょっと先が…

  • YOLOv8試し

    会社で必要になったので、YOLOのv8を試してみる。 公式GitHub やりたいこと 環境準備 推論実行 GPU使う GPU使って推論 以上 公式GitHub github.com ↑ 頻繁にバージョンアップするので、v8.1.0のタグが付いているところのリンク。 ドキュメント見ると、YOLO v5でやったときだとGitHubリポジトリからクローンして使っていたが、今はpipでインストールすればいいだけになっているよう。 やりたいこと 人物の姿勢推定をやりたい。 前OpenPoseでやってみたが、最近のYOLOでも簡単にできるようになっているようだったので、やってみる。 以降はJupyterで…

  • 楽天証券でNISA口座

    作ってみたのでメモ。 なぜ作ったか 会社で営業さんと話してて、新NISAの話とか出てきて、ついていけなかったが、調べてみてもあんまりピンとこず、実際にやってみたら実感して理解もできるだろうと。 ということで少なめの資金でちょっとだけやってみようかなと。 あわよくばお小遣い稼ぎになればいいな。 なぜ楽天証券にしたか このページを参考にして選んだ。 【2024年】新NISAおすすめ口座5選【証券会社・銀行を比較】|たあんと どのNISA口座でも、つみたて投資枠なら特に手数料はかからないので、特に問題はないかなと。 ただ、auと楽天のポイントはよく使うので、楽天証券かauカブコム証券がいいかなと。 …

  • かまぼこいたのイタコ続き

    かまぼこいたのイタコとか、追加で作った。 nokixa.hatenablog.com 全員集合 かまぼこいたのイタコ x1追加、トイレットペーパーのしんのすけx2新規作成。 イタコ比較 左が前回、右が今回作成。 かまぼこ板自体の木目と、目の間隔の違いで、ちょっと顔の印象が変わってるかも。 トイレットペーパーのしんのすけ 2つ作成。 確保したトイレットペーパーの芯の一つが茶色なので、ガングロしんのすけに。 あと、画像の印刷が実物より小さいので、顔のパーツも小さめに。 でもこれはこれでいい感じかなと。 以上。

  • かまぼこいたのイタコ作った

    お正月に買ったかまぼこの板が出たので、作ってみた。 概要 おかあさんといっしょの中のコーナー「やくめをおえてこのたび自由になりました団」の中に出てくる、かまぼこ板のキャラクター。 Xユーザーの作り方を作るさん: 「NHK Eテレ「おかあさんといっしょ」で「やくめをおえてこのたび自由になりました団(やくおえ団)」という映像を企画・制作しました。 アニメーションはうえ田みお、アートディレクションは貝塚智子という逸材の二人。共に企画から参加。(佐藤雅彦) 放送:毎週土曜日 7:45am~、5:00pm~ https://t.co/w1RxwRUA7A」 / X 他に作ってみた人。 わかる人にはわかる…

  • M5Stampでcaptive portal

    今回はM5Stampの続き。 まだExampleを試してみる。 Captive Portal Example captive portalとは プロジェクト作成、ビルド、実行 実行結果 プロジェクト中身 以上 Captive Portal Example 今回やってみるのは、protocol > http_server > captive_portalのところ。 説明を見ると、「すべてのDNS IP questionsをsoftAPのポイントにリダイレクトして、すべてのHTTPリクエストをcaptive portalのルートページにリダイレクトする」という感じのことが書かれている。 Andro…

  • はてなブログでページ内リンク

    はてなブログの書き方の備忘録。 Markdown記法でやる前提。 簡単なやり方 どこからやり方調べたか忘れたが、一番簡単なやり方。 まず、普通に#で見出しを書く。 複数の#でレベルを下げた見出しにもリンクできる。 # リンク先1 ## リンク先2 リンク元では、以下のように書く。 なお、Markdownだと、見出しを書くときに#の後ろに半角スペースが必要だが、ここでは不要。 ※レベル下げした見出しでも#1個でオッケー [リンク元1表示](#リンク先1) [リンク元2表示](#リンク先2) 以下試し リンク元1表示 リンク元2表示 リンク先1 内容だよ 前の記事の画像だよ リンク先2 内容その2…

  • M5Stampでhttpサーバー

    M5Stampの続き。 今回もサンプルプロジェクトから。 やりたいこと サンプルプロジェクト確認 HTTP基本 プロジェクト作成、ビルド、実行 実行 クライアント側からテスト テスト方法 curlコマンドでテスト 色々実行結果 PowerShell、GETメソッド PowerShell、POSTメソッド bash、GETメソッド bash、POSTメソッド 参考: M5Stamp出力全部 以上 やりたいこと 前にM5StampでWi-Fiが使えることが確認できたので、サーバー機能を入れたりして、子供のおもちゃをIoT化したときの機能の一つとして使いたい。 サンプルプロジェクト確認 サンプルプロ…

  • QsyncでPCデータバックアップ

    2年前にQNAP製NASを自宅に導入して、特に大きな問題なく運用できている。 今までYOLOとかOpenPoseとかを動かしたときは、全てPC上でローカルで動かしてたが、PCがいかれてしまう心配があるのと、PCの前にいないと結果を見られないのがちょっと嫌なので、この辺りをNASに自動バックアップするようにする。 NASはそこそこ容量がある(ディスクは3TB)ので、そこは問題ないはず。 参考 この記事を参考に、PCにQsyncをインストールして動かす。 QNAPさん自身の記事だが。 note.com Qsyncインストール 参考記事に書いてあるQNAP公式URLからインストーラをダウンロードする…

  • M5Stamp LED制御動かす

    M5Stamp続き。 やってみたこと M5StampのLEDを動かしてみたいと思って、いくつかやってみた。 M5Stamp LEDについて M5Stamp C3には、"programmable RGB LED (SK6812)"というのが付いている。 docs.m5stack.com 回路図を見ると、こんな感じで、電源とDOUT、DINの計4ピンだけが出ているシンプルなもの。 このDINが、ESP32-C3のGPIO2に接続されている。 SK6812を調べてみると、マイコン内蔵のRGB LEDとのこと。 NeoPixelというブランド名が付いている。 romly.com 秋月でも売られていて、…

  • M5StampでWi-Fi

    前回に引き続き、M5Stampいじってみる。 やってみること Example Projectが色々あったので、手あたり次第やってみる。 ぱぱっと色々試せそう。 Wi-Fiサンプル M5Stampで興味あることの一つはWi-Fi機能。 試しに家のWi-Fiに接続できるか? ESP-IDFでサンプルを調べると、"Wi-Fi Station Example"というのがある。 これはWi-Fiのアクセスポイントへの接続のサンプルのよう。 プロジェクト作成 前回の手順で。 こんな感じのプロジェクトが開いた。 下のコンソール出力がちょっと気になるが… プロジェクト設定 まずはターゲットデバイスを設定。 コ…

  • M5Stampやってみる

    スイッチサイエンスでOAK-D S2を買ったのと同時にM5Stampを買っていたので、これに手を付けてみる。 買ったもの M5Stampとは? 動かす手順 PCに環境構築 VSCodeから環境構築 拡張機能インストール セットアップ実施 Example Projectやってみる プロジェクト作成 プロジェクト設定: ターゲットデバイス設定 プロジェクト設定: SDK設定 C/C++ Configuration ビルド実施 バイナリサイズ確認 シリアルポート設定 書き込み実行 プログラム動作 今回ここまで 買ったもの 買ったのは、M5Stamp C3 (5個入り)。 M5Stamp C3 (5p…

  • USBケーブル選び

    前回、まともにOAK-D S2を動かそうと思うと、USB TypeC - TypeCケーブルが必要ということがわかった。 ので、Amazonとかで選んでみる。 USB TypeC で検索 したら、色々出てくる。価格も1000円前後でお手頃。 と思ったら、「映像出力に対応していません」とか書いてある。 さらによく見ると、「480Mbpsで高速ファイル転送」とか書いてある。 いつの時代の話じゃ👨🏻‍🦳 OAK-D S2はUSB 3.0以上の通信レート必要そうだったので、これでは使えない。 検索条件変更 Amazonアプリの検索窓に入力してると、「usb 3.2 gen 2 type-c」と言うのが…

  • OAK-D S2買った

    買おうか悩んでいたOAK-D S2、前々回の記事書いた直後にポチッとして、H ZETTRIO見た帰りに受け取った。 ということで、さっそく開封、動かしてみる。 まず開封 動かしてみる 公式ドキュメント見てみる チュートリアルを動かしてみる 電力確認 PCのUSBポート仕様 USB規格の電源関連 OAK-Dの消費電力 結論 チュートリアル続き プレビュー変更 AIモデル変更 今回はここまで まず開封 外箱はしっかりしてる。 iPhoneぐらい、というと言い過ぎだが、そんな感じの質感。 開けると、まずカメラの表面が出てくる。 真ん中と、その左右にカメラのレンズが見える。 上下逆だった。 カメラの下…

  • H ZETTRIOさん町田で見てきた

    自分の生活圏内の町田で、H ZETTRIOさんがライブされるということで、10/14(土)に行ってきた。 http://worldapart.co.jp/hzettrio/live/2023-10-14sat-special-speed-music-night-with-h-zettrio-in-machida-citizens-hall/ 会場は町田市民ホール。 15時開場、16時開演。 開場時間ちょうどに来た、結構並んでる。 本日の催物。 入場ゲート通ると、列ができてて、そこに並んだ。が、よく見たらグッズ販売の列だった。 せっかくなので並んで、ソクドくんキーホルダー¥800を購入。 会場入…

  • OAK-D買っちゃおうかな

    ステレオカメラ興味 ピアノの指の動きの認識をやろうと思ったときに、ステレオカメラが欲しいなと。 3次元的な動きをちゃんととらえたい。 ステレオカメラ、市販品でどんなのがあるかなと調べると、IntelのRealSenseか、Luxonis社のOAK-Dシリーズぐらいしかなく。 ビジネス向けなら色々あるのかもだが、買いにくいし高そうだし。 スイッチサイエンス Luxonis社特設サイト www.switch-science.com Intel RealSense store.intelrealsense.com Intel RealSenseはすでに生産中止になっていて今後の発展が見込めないし、価…

  • スマホでコードブロック横スクロール

    はてなブログの体裁の話。 前に、コードブロックの1行が長いときに折り返さずに横スクロールできるようにする設定をした。 が、スマホで見てみると、やっぱり折り返しになってしまっていた。 これに対処して、スマホでもコードブロックの横スクロールできるようにしたので、備忘録。 前にやったこと はてなブログ管理画面の「デザイン」→「カスタマイズ」→「デザインCSS」で、記述追加。 (どこまでがこのときの対応部分だったか不明) /* ソースコードの囲み */ pre.code { margin-bottom: 1.5em; padding: 1em; background: #333; color: #ee…

  • MediaPipeやってみる - 2

    MediaPipeの公式サイト見てたら、ブラウザ上ですぐ試せるデモがあったので。 公式サイト Hand Landmark Detectionを試す (ついで1) ブログ用のgif加工作業 (ついで2) MediaPipeで顔隠し 今回はここまで 公式サイト MediaPipe Studio MediaPipeに入っている色々なモデルを試せる。 入力元をPC内蔵のWebカメラにできるので、使いやすい。 これはObject detectionを試した例。 Hand Landmark Detectionを試す 左のバーから、Hand Landmark Detectionを選択。 どの程度ピアノ弾いて…

  • MediaPipeやってみる - 1

    前回まで、OpenPoseを使って画像からの人の姿勢推定をしてたが、GoogleのMediaPipeでもそういったことができると聞いたことがあるので、試してみる。 参考 MediaPipe概要確認 conda環境作成 まずMOT16で試し。 自分のピアノ動画でやってみる。 hand_landmarker使う モデルファイル 結果の可視化 オプション見直し サンプル画像で試し もしかして色フォーマット間違えてた? 以上 参考 yoppa org – MediaPipeで遊んでみる 【MediaPipe】手の形状検出をやってみた DevelopersIO pipでpython環境に簡単にインス…

  • OpenPoseやってみる - 4

    OpenPose続き。 nokixa.hatenablog.com やっておきたいこと 使うデータ ほかにも お台場ガンダム はにわ ディズニーランドのくまさん 初音ミクさん カッチカチのひと ポケモン 兵長イラスト 小ネタ : Bingチャットでバッチファイルのコード生成 ffmpegでまとめてできないか? Bingチャットに聞いてみる OpenPose実行 ガンプラ お台場ガンダム はにわ ディズニーランドのくまさん 初音ミクさん カッチカチのひと ポケモン 兵長イラスト 処理時間について 解像度ごとの違い 出力形式による違い 入力解像度への依存性 今までの画像データで再確認 MOT16 …

  • OpenPoseやってみる - 3

    前回に続き、OpenPoseのデモをもう少し動かしてみる。 nokixa.hatenablog.com やってみること 解析対象の動画は、前と同じくMOT16で。 OpenPoseDemo.exeのフラグを色々と試してみる。 手と顔の認識 --faceと--handのオプションで認識が追加される。 1個ずつやってみる。 .\bin\OpenPoseDemo.exe --image_dir ..\..\MOT16\train\Mot16-09\img1\ --face (base) PS C:\work\openpose_test\openpose> .\bin\OpenPoseDemo.exe…

  • OpenPoseやってみる - 2

    前回の続き。 公式のOpenPoseのサンプルから試しに動かしてみる。 nokixa.hatenablog.com ビルド済みバイナリを動かしてみる リリース版ダウンロード モデルダウンロード デモ実行 今回はここまで ビルド済みバイナリを動かしてみる Pythonから動かす前に、ビルド済みバイナリを動かしてみることが推奨されていたので。 github.com リリース版ダウンロード Windows版のv1.7.0をダウンロードする。 Release OpenPose v1.7.0 · CMU-Perceptual-Computing-Lab/openpose · GitHub ダウンロードし…

  • OpenPoseやってみる - 1

    次のネタ。 OpenPoseを使って、画像からの人の姿勢推定をやってみたい。 概要 やり方候補 OpenPoseの学習済みモデルを、OpenCVのdnnモジュールで読み込む tf-pose-estimationリポジトリを使う pytorch-openpose OpenPose公式のドキュメント やり方選択 ここまで 概要 こちらはOpenPose本家のGitHubページ。 github.com リポジトリの最終更新は2023年7月だが、最新リリース版は2020年11月のv1.7.0になっている。もう開発は止まっているのかもしれない。 コードはC++メインで書かれているよう。 できればPyth…

  • GPU使ってYOLO動かす

    前回、YOLOをお試しで動かして画像認識したが、CPUでの動作だった。 今回、Windows環境でGPUを使えるようにセットアップする。 nokixa.hatenablog.com 参考サイト 物体認識に使う画像 セットアップ手順 NVIDIAドライバーインストール Build Tools for Visual Studio PyTorch確認 CUDA Toolkitインストール cuDNNインストール 既存conda環境のPyTorchでGPU使えるようにする 本当に現状のPyTorchでGPU使えないのか? よく見たら、torchモジュールで確認できそうだった PyTorchインストール…

  • 画像物体認識お試し

    前回、カメラ(EZVIZ CP1)からRTSP受信できることが確認できたので、画像からの物体認識を簡単に試してみる。 nokixa.hatenablog.com やり方 condaでYOLO試し用の環境作成 GitHubリポジトリのクローン 環境セットアップ コマンドプロンプトでanaconda使う設定 condaコマンドでrequirements.txtを読み込む案 conda環境にpipをインストールして、pipでやる案 画像物体認識 以上 ついで やり方 YOLOv5を使う。 今はYOLOv8が出てるが、会社でYOLOv5を使ったことはあって、動かすまでが簡単だったので。 GitHubの…

  • ネットワークカメラ(EZVIZ CP1)買った3

    引き続きカメラを動かしてみる。 今回はPCからの制御をやってみる。 前回記事。 nokixa.hatenablog.com 参考 Ezviz Studioのインストール Ezviz Studioの起動 カメラ画像閲覧 スクリーンキャプチャ カメラの動きの動画 詳細設定 RTSP受信 以上 参考 今度も同じブログの記事を参考にします。 EZVIZ CS-C6N PCからの閲覧方法 - ネットワークカメラ推進会 Ezviz Studioのインストール 参考サイトの通り、公式サイトからインストーラをダウンロードして実行。 Ezviz Studioの起動 起動すると、まずWindowsのファイアウォー…

  • ネットワークカメラ(EZVIZ CP1)買った2

    購入したネットワークカメラ(EZVIZ CP1)を設定して動かしてみます。 前回記事。 nokixa.hatenablog.com 参考にしたサイト 手順 概要 スマホにアプリダウンロード アプリの設定 (アカウント登録) カメラ設定 カメラ操作してみる 参考にしたサイト www.networkcamera.work 型式が少し違うが、違いは見た目だけと思われる。 というより、そう思って今回のCP1を買いました。 手順 概要 大まかにやることは、 スマホにアプリダウンロード アプリ設定 (アカウント登録) カメラ設定 カメラ操作 です。 スマホにアプリダウンロード 私はiPhoneを使っている…

  • ネットワークカメラ(EZVIZ CP1)買った

    amazonで買って届いた。 EZVIZ CP1です。 前回記事。 nokixa.hatenablog.com 外観 外箱。 内容物一通り。 カメラ本体、USBケーブルと電源、取付関係とあとは取説とか。 カメラのサイズ感。 前に買ったDell G15 (15.6インチ)と並べて。 これだとよくわからないかな。 そこそこ存在感ある感じ。 カメラ裏側。 他のサイトで見た通り、LANポート(RJ45)とUSB micro-Bコネクタ。 付属のUSBケーブル、異様に長い。 3mということなので、確かにこんな長さか。 4つ折りにしてこんな感じ。 ここまでで 一旦記事はここまでで。 次回実際に動かしてみま…

  • ネットワークカメラ買いたい2

    引き続き、ネットワークカメラ探し。 まずWebカメラ見てみる TP-Linkで見てみる EZ-VIZで見てみる EZVIZ BM1 EZVIZ BC2 EZVIZ C6W EZVIZ C6N EZVIZ CP1 ということで まずWebカメラ見てみる Amazonで「Webカメラ ptz」で、かつ10,000円以下の条件で調べてみたが、9000件以上出てきてうへぇとなる。 「コネクティビティ技術」で「USB」を選んだら、1000件ちょっとに減ったのでちょっとほっとする。 出てきた候補見ると、本当にPTZ機能付いてるのかよくわからない。 【2023新モデル】 WEBカメラ 4K オートフォーカス…

  • ネットワークカメラ買いたい

    ディープラーニングやりたいということでPCを買いましたが、ディープラーニングで何をやりたいかというと、画像からの物体認識をやりたい。 会社でそんなことをやっていて、面白いので自分でもやってみたいと思い。 どこかから画像を拾ってきて物体認識をやるだけでもいいかもですが、カメラを使ってリアルタイム処理できると面白そうかなと。 前iPhone+DroidCamアプリでもやりましたが… nokixa.hatenablog.com amazonのプライムデーのときにネットワークカメラも色々セールで出ていて、見ていたら欲しくなったという経緯です。 結局そのときは買ってはいませんが、PCを買って何をやろうか…

  • ブラウザ表示の見たまま印刷

    ブラウザで見たページを、見た通りのまま印刷する方法についてです。 自宅のインターネットのルーター設定をブラウザからいじって、結果を印刷しようとしてうまくいかなかったので調べました。 このサイトを参照。 ホームページの印刷をすると崩れてしまう。見たままに印刷する方法・2021年版 名古屋のホームページ制作会社・ゴリラウェブ やり方候補 Chrome拡張機能 よく出てくるのは、Chromeの「FireShot」という拡張機能を使う方法。 ただ、なんだか有償版への誘導がうるさい。 Edge機能 Edgeでは、標準で「Webキャプチャ」機能がついているよう。 「ページ全体をキャプチャ」という選択肢…

  • PCセットアップ続き

    前回の続き。 色々インストールしたもの VSCode Git Anaconda PowershellからAnaconda使う設定 ここまで 色々インストールしたもの VSCode コードを見たかったので。 普通に公式サイトからインストーラを落としてきて、インストール実施。 インストール時、コンテキストメニューへの追加の設定があったので、チェックを入れる。 ここで入れ忘れても、確かもう一回インストーラを動かせば設定できたような。 Pythonコードを含むフォルダを開いてみると、PythonのExtentionと、Gitのインストールを勧められたので、その通りに。 Git 公式サイトからダウンロー…

  • PCセットアップ

    新PC購入後のセットアップのメモ。 自分の備忘録的な意味で。 まずやったこと色々 画面拡大率 Google Chromeインストール McAfeeが入ってたのでアンインストール 秀丸 iTunes OneDrive設定 画面リフレッシュレート Dropbox こんなところで まずやったこと色々 画面拡大率 デフォルトで125%になってたので、100%に変更 なんかデスクトップ画面が狭い感じだった 変更して広々した Google Chromeインストール Edge使おうとも思ったが、ほかのデバイスと同期できるほうがいいなと思い。 履歴とブックマークとか。 ブックマークはあんまり使ってないからこれ…

  • PC購入

    PC買っちゃいました。 選択の過程 結論 今はハイエンドPC買い時らしい 今後 選択の過程をば。 選択の過程 ディープラーニングやりたい GPU付きのパソコン欲しい、今のがそれなりに古くなってきたのもあるし 予算はしょっぱく、とりあえず貯金した中から、20万ぐらいまで GPU付けるとなると、デスクトップの案も出てくる (今はノートPC使ってる) ただ、今家が物であふれてて、デスクトップ置く場所に困る あと、デスクトップだと、パソコンの前に向かわないといけなくなる。ノートPCならリビングに持っていって使える。ちょっと億劫。(リビングは主に子供スペースなのでデスクトップ置けない) GPUは、今会社…

  • OpenCVやってみる - 57. Optical Flow

    OpenCVのOptical Flowを試してみる 画像からの動き検出をやってみたいと思っています。 OpenCVの公式チュートリアルの中で、Optical Flowが取り上げられていて、これでできそうなので、やってみます。 OpenCV: Optical Flow 対象データ 同じデータを使っても面白くないので、別のデータで。 MOTChallengeの中のMOT16のデータを使ってみたいと思います。 https://motchallenge.net/data/MOT16/ 色々と動画データがありますが、特に密なOptical Flowを計算するときは背景が動いていない(カメラが固定されてい…

  • OpenCVやってみる - 56. GitHubでexe公開

    今回で春のパン祭り点数集計のアプリも仕上げです。 GitHubのrelease機能を使って、exeを公開してみます。 下記を参考にしましたが、基本的にはGitHubのガイドに従うだけです。 【GitHub】exeファイルを配布する方法 - しまぞうブログ 改めてGitHubのリポジトリのリンクを貼っておきます。 github.com 手順 参考サイトでは、既存のtagを使っていましたが、今回はRelease機能上でtagも一緒に新規作成しました。 GitHubリポジトリトップで、"Create a new release"をクリック。 スクリーンショットは取り忘れました(´-`) "Choos…

  • OpenCVやってみる - 55. exe化変更、リポジトリ調整

    今回は、exeをGitHubに上げる前に、いくつか調整しておきます。 変更点は、GitHubリポジトリに反映しています。 github.com exe化の変更 その他変更 PowerShellスクリプト化 requirements.txt生成 ついで 以上 exe化の変更 Pyinstaller生成物フォルダを変更 pyinstallerフォルダを作って、その中にbuildとdistのフォルダを生成するようにしました。 アプリのアイコン追加 --iconのオプションで指定可能。 お絵描きソフト(よく使っているdrawio)で適当なアイコンを作り、iconフォルダを作ってそこに配置しました。 p…

  • OpenCVやってみる - 54. Nuitkaでexe化

    今回は、前回に引き続きexe化をやります。 前はPyinstallerを使いましたが、今回はNuitkaを試してみます。 conda環境作成 Nuitkaインストール Nuitka実行 exe実行 ここまで conda環境作成 前回用意したconda環境はかなり最小限のものでしたが、Pyinstallerがどうしても余分になってしまいます。 なので、環境を再作成します。 前と同じコマンドとなります。 実行結果は省略します。 conda create -n harupan_nuitka python=3.7 conda activate harupan_nuitka pip install op…

  • OpenCVやってみる - 53. Pyinstallerでexe化

    予定通り、春のパン祭り点数集計アプリのexe化をやってみます。 今回は基本的にはJupyterを使わない記事です。 スクリプト更新 exe化 処理時間表示 conda環境再作成 Pyinstallerでexe化 変更内容 Pyinstaller実行 その他オプション指定 処理時間再確認 ここまで スクリプト更新 今まで、tkinterを使ったGUIはJupyter上で試していただけなので、スクリプトに追加します。 スクリプトは、GitHubに上げました。 今までprivateリポジトリとして用意していましたが、今回ライセンスファイル(MITライセンス)も追加したうえでpublicにしてみました…

  • OpenCVやってみる - 52. GUI調整

    今回は、春のパン祭り点数集計GUIの微調整をしていきます。 調整項目 主に調整したいのは、 画像更新停止ボタン追加 ある程度点数認識できたら間違っている部分を目視で確認、点数修正、という使い方を想定しているので。 ウィンドウサイズに応じた表示サイズ調整 目視確認しやすいウィンドウサイズに調整したいので。 の2点。 あと細かい調整。 点数集計結果はLabelウィジェットを使って表示 前までは、画像に点数表示エリアをくっつけて表示していましたが、今はGUIでの表示手段があるのでそれで。 cv2.VideoCaptureのopen()のタイムアウト設定 open()やread()に失敗したときは、接…

  • OpenCVやってみる - 51. VideoCaptureタイムアウト設定

    春のパン祭り点数集計GUIの調整をしています。 調整項目の一つとして、VideoCaptureの接続タイムアウト設定がありました。 iPhoneに入れたDroidCamアプリ経由で画像を取得する場合、割り当てられているIPアドレスが場合によって変わるので、IP設定を間違えて接続しようとしてしまうことがあり。 そうすると、前のコードでは、1分近く接続待ちしてしまうことがありました。 その間アプリを落とすこともできないと。 これを解決すべく、接続のタイムアウト設定のしかたを調べてみましたが、これで1記事にしておきます。 なかなかいい情報が見つからず、大変だったので… 結論 以下のコードで、Vide…

  • OpenCVやってみる - 50. 点数集計処理組み合わせ

    今回は、今まで作ったGUIに、点数集計処理を組み合わせていきます。 処理組み合わせ 去年の点数集計処理と、今回のGUIを組み合わせるだけです。 前回はtkinter.Frameを継承したアプリを一度作り、その後で関数をオーバーライドしたりしましたが、今回は最終的な形のものをまとめて作ります。 from harupan_data.harupan import * import tkinter as tk import cv2 from PIL import Image, ImageOps, ImageTk import queue import threading class harupan_g…

  • OpenCVやってみる - 49. スレッドで並列処理

    前回の続き。 今回は、春のパン祭りシール点数集計の処理を組み合わせていく前に、アプリ内処理の並列化をします。 スレッドで並列処理 GUIのクラス化 GUIと画像取得部分の分離 (スレッド化) ここまで スレッドで並列処理 前回はGUI上でのキー入力でカメラ画像更新をしましたが、実際は操作なしで更新するようにしたいところ。 ということで、処理をいくつかに分けて、それぞれ並列処理で別々に動かすことで、画像の自動更新を実現します。 GUIのクラス化 並列化する前に、少しコードを整理しておきたい。 今まで見てきたTkinter参考では、tkinterのクラスを継承してアプリケーションを作っていることが…

  • OpenCVやってみる - 48. GUIでカメラ画像表示

    前の記事通り、GUIでのカメラ画像表示をやってみます。 前回と前々回の内容の組み合わせ+αです。 カメラ画像表示 キー入力受付 今度こそカメラ画像表示 ここまで カメラ画像表示 前回、前々回の内容に加えて、OpenCV画像→PIL画像の変換があるぐらいです。 下記参照。 【Python/tkinter】OpenCVのカメラ動画をCanvasに表示する イメージングソリューション after()での待ちを入れていますが、いまいち理解できていないので、まずはキーボード入力で更新するようにします。 キー入力受付 と、そのためにはTkinterでキー入力受付が必要。 下記参照で。 Tkinter:…

  • OpenCVやってみる - 47. PythonでGUI

    前回の続きです。 春のパン祭りアプリをexe化する前に、PythonでGUIを作れるようにしておきます。 今回の記事はJupyter notebookでやった内容の貼り付けです。 Tkinter試し GUI基本(テキスト表示、文字入力、ボタン) 少しだけ試し 画像表示 ここまで Tkinter試し PythonでGUI作成するのに、いくつか良く使われるライブラリがあるようですが、今回はTkinterを使ってみます。Pythonインストール時に標準で付いてくるそう。 まずは簡単なGUIを動かしてみる。 以下を参考にしました。 https://python.keicode.com/advanced…

  • OpenCVやってみる - 46. カメラ変更

    久し振りの更新です。 今年も春のパン祭りが始まり、シールも早速集まってきた(もらった)ので、去年のシール点数自動集計を改めて触ってみました。 いくつか本体の処理以外でやったことがあるので、記事にしておきます。 今回は、Jupyter notebookのエクスポートではなく、普通にはてなブログ上で書いた記事です。 内容 カメラの変更 一旦ここまで 内容 カメラの変更 去年はPC内蔵のカメラを使っていましたが、モニタ側に向いているインカメしかないので、シール台紙を映しながら結果を確認するのがやりづらく。 iPhoneをWebカメラ化する方法があるようだったので、これを試しました。 exe化 Pyt…

  • DTMやってみたい - 2. 音楽理論

    DTMやってみたいの続きです。 音楽理論 本も色々あるみたいですが、まずはネットで調べられないかということで。 下記のサイトがよさそうだったので、一通り読んでみました。 https://sleepfreaks-dtm.com/category/music-theory-beginner/ 読んだ感じ。 音のインターバル(完全1度、長2度、完全4度、等々)はちゃんと把握しておこう。 ここにも一覧があった、参考になる。 https://composer-instruments.com/theory-interval/ ハノンのスケールの練習したことがあるので五度圏わかる!ハノンやっててよかった! …

  • DTMやってみたい - 1. やりたいこと

    時間が空いちゃいましたが、ブログ更新しておこう。 やりたいこと 前のテーマが終わったので次何しようかと。 で、DTMやりたいなと。 エレクトーンやってます(就職してから始めたのでそんなぐらいのレベル(´・ω・`)、今は時間が取れてなくてやってない)が、エレクトーン自体は持ってない。 練習は基本電子ピアノで、メトロノーム機能とちょこっと音色があるぐらい。 GarageBandで伴奏データ打ち込んでみたことはある、やっぱりドラムベースあると違う。 ヤマハのシンセ(MX61)を随分前に買ったが、全く使いこなせてない。でもちょっといじってみた感じ、面白そうな予感。 という感じの背景があり、 DTMやっ…

  • OpenCVやってみる - 45. 高速化処理で再確認(最終回のはず)

    今回は、前回高速化した処理で、PCカメラ画像のリアルタイム処理をやってみます。 今度こそ最終回! 準備 修正したスクリプトの読み込み、テンプレートデータとSVMデータの読み込み。 from harupan_data.harupan import * svm = load_svm('harupan_data/harupan_svm_220412.dat') templates2021= load_templates('harupan_data/templates2021.json') リアルタイム処理 これは前々回と全く同じです。 def realtime_harupan(): cap = cv…

  • OpenCVやってみる - 44. 処理の調整5(高速化)

    春のパン祭り点数集計、前回で最後のつもりでしたが、1つ高速化の手段を思いついたので、もうちょっとがんばります。 変更内容 下準備 スクリプト読み込み テンプレートデータ、SVMデータ読み込み 処理変更 変更処理試し 処理時間計測 いざ実施 探索範囲を変えてみる 以上 変更内容 前に処理の様子を見た感じ、ICPアルゴリズムで時間がかかっているようでした。 テンプレートの輪郭点と対象輪郭の輪郭点間の最近傍点を探索するのに、輪郭上の全点間の距離を計算していたので、それが時間がかかったのかと。 思い付いたことは、 輪郭の点データは、輪郭の周に沿った順番に並んでいたので、全部の点からの探索をしなくてもい…

  • OpenCVやってみる - 43. 仕上げ(最終回)

    今回は、春のパン祭りのシール点数集計の仕上げになるかと。 リアルタイム処理作成 PCのカメラ画像を連続的に取得して、点数集計を実施します。 今年は現状3枚の春のパン祭り台紙が用意できているので、これで確認します。 下準備 スクリプト読み込み テンプレートデータ読み込み SVMデータ読み込み を行います。 今回は、今年(2022年)の春のパン祭り点数の集計をやろうと思うので、2021年のテンプレートデータを使用します。 from harupan_data.harupan import * svm = load_svm('harupan_data/harupan_svm_220412.dat') …

  • OpenCVやってみる - 42. 処理の調整4

    まだ春のパン祭りの続きですが、1点だけ処理の調整を試したいと思います。 -- 追記 -- 今までmarkdown記法でブログを書いていると、ときどき画像がうまく表示されない(半角スペース4つのブロックの後に画像が表示されない)問題があって、前にはてなブログさんに修正の希望を出していましたが、どうも前回の記事を書いているときから、直っているようでした。 はてなさんありがとう~ 変更内容 今まで見た点数輪郭では、"0"を除いて、その内部には輪郭を含みませんでした。 これを利用して、ICP処理を実施する前に候補輪郭を絞り、処理の高速化ができないか、試してみます。 "0"の輪郭は除外されてしまいますが…

  • OpenCVやってみる - 41. 処理の調整3

    春のパン祭りシールの点数文字認識処理は、これ以上調整はなしにしようと思っていましたが、もう少しがんばってみます。 方針 前回の結果で、問題点の1つは シールの白抜き部分(点数文字が含まれる)の間隔が小さく、輪郭がつながってしまう ということだったかと。 画像の2値化処理のところに戻って、うまく調整できないかと考えました。 2値化の調整 今作っている処理では、色相(Hue)、彩度(Saturation)を使って、点数シールのピンク領域を前景領域とした2値化画像を作っています。 今まで使った7つの画像と、前回うまくいかなかった画像でいくつか試してみます。 一旦まずはライブラリ等の下準備を。 imp…

  • OpenCVやってみる - 40. カメラ画像取得

    春のパン祭り点数集計も仕上げの段階ですが、今回はPCのカメラ画像を取得できるようにしたいと思います。 カメラから画像取得 OpenCVチュートリアルの最初のほうでやっています。 これを試してみます。 https://docs.opencv.org/4.x/dd/d43/tutorial_py_video_display.html やることは、cv2.VideoCapture()でVideoCaptureオブジェクトを作り、read()で画像データを1枚得る、というところです。 import cv2 %matplotlib inline from matplotlib import pyplot…

  • OpenCVやってみる - 39. 点数計算処理実装

    今回は、点数計算の実アプリケーション作成に向けて、以下の処理を検討します。 画像1枚を受け取ってからの一連の処理 点数計算 処理フロー 点数計算アプリケーションは、ストリーミングされている画像データから、1枚取り出して計算処理を実施・表示、というのを繰り返すイメージで考えます。 処理の流れは、 画像を1枚取得 点数文字の候補となる輪郭を検出 各輪郭について、一致度ベクトルを計算 SVMに通して、どの数字なのか、それとも数字の輪郭でないのか判定 判定結果の数字を足して、総点数を計算 結果の表示 最後の結果の表示ですが、おそらく誤認識は発生するので、総点数を表示するだけではなく、どこの輪郭を何点と…

  • OpenCVやってみる-38. 処理の調整2

    春のパン祭り点数文字認識処理を調整していますが、なかなか完璧にはいかず… 調整は今回までにして、実際のアプリケーションを作っていく方向に進めたいと思います。 今回変更したこと 色々調整していて、以下変更しました。 数字テンプレートとする輪郭データを、cv2.minAreaRect()での角度を元にまっすぐに直しておく。(効果はあまり出なかったが、処理を整理できたので、この変更版処理を使っておきたい) ICP処理の中で、最近傍点探索処理があったが、この高速化を行った。 点数文字認識処理の区切り方を修正した。 一致度計算では、cv2.matchTemplate()関数を使っていたが、2つのサイズの…

  • OpenCVやってみる - 37. 処理の調整

    春のパン祭り点数計算は前回までの処理でおおよそできるようになりましたが、少し調整していきます。 ICP収束条件 初期変換行列での判定 文章を整える気があまりなく… 以下雑な文章ご容赦で。 下準備 Jupyter notebookを改めて作っているので、始めに必要な処理を再度行います。 ライブラリインポート 画像データ読み込み 必要な関数の定義(今回は点数文字候補輪郭の検出) 点数文字テンプレートのデータ準備 いらなさそうなデバッグ表示などは削除しておきます。 スクリプトにまとめておいたほうがいいかな… ライブラリインポート、画像データ読み込み import cv2 import numpy a…

  • OpenCVやってみる - 36. SVMで数字判定

    前回からの続きです。 Jupyter notebookのデータ等の状態も引き継いでいます。 前回は、春のパン祭りシール台紙の画像から点数数字の輪郭を取得、数字テンプレートと比較して一致度を出して、固定の閾値で判定してみましたが、いまいちきっちりとは判定できませんでした。 検討してみたところ、結果的にOpenCVに含まれているSVM(Support Vector Machine)のライブラリを使うことでうまくいくようになりました。 判定方法検討 前回は抽出した点数数字の輪郭から、各数字のテンプレートと比較して、一致度が閾値を超えたもの(の中で最大の一致度を取る数字)を選びました。 各数字ごとへの…

  • OpenCVやってみる - 35. 複数データで点数判定実施

    春のパン祭りが始まりましたが、まだ点数自動計算ができず… むずい… 方式変更 前まで検討していた点数判定方法を実際のデータで試したところ、うまくいかず。 特に"5"の文字の判定が困難でした。 経過は省きますが、以下の点を変更しました。 "0"以外での比較方法の修正 "0"以外の文字での比較ですが、前回まではテンプレート→対象輪郭の変換行列を求めて、変換後テンプレートと対象輪郭の塗りつぶし画像を比較していました。 ただ、変換行列を求めた後に逆変換行列を求め、テンプレートの塗りつぶし画像(1回生成すればいい)と逆変換をかけた対象輪郭の塗りつぶしを比較する、というほうが処理が軽くなるかと考えました。…

  • OpenCVやってみる - 34. "0"の文字比較

    連続の投稿になりますが、続きです。 2月1日から春のパン祭りスタートらしいので、ペースアップ中です… 今回は前回の記事と同じJupyter notebookでやっているので、画像読み込みなどの下準備は省きます。 楕円近似による"0"の判定 "0"の文字の判定についてです。 前回考えた手法を再掲します。 楕円で近似、近似した楕円とテンプレートマッチングを実施、一致度が閾値以上であれば"0"の文字であると判定 ひとまずテンプレート選択に使用したのと同じ画像を使って試してみます。 手順は、 各輪郭について、楕円近似を行う 各輪郭周辺の小画像を用意する 輪郭の塗りつぶし画像、近似楕円の塗りつぶし画像を…

  • OpenCVやってみる - 33. アフィン変換行列推定、"0"以外の文字比較

    前回の続きです。 今回は実際に文字テンプレート - 比較対象輪郭間のアフィン変換行列の推定、比較を行ってみたいと思います。 下準備 今まで通りの画像読み込み、下処理です。 import cv2 import numpy as np %matplotlib inline from matplotlib import pyplot as plt import math img1 = cv2.imread('harupan_190428_1.jpg') img2 = cv2.imread('harupan_190428_2.jpg') img3 = cv2.imread('harupan_20031…

  • OpenCVやってみる - 32. 輪郭の変形(考察のみ)

    あけましておめでとうございます。 1月も半分以上過ぎてしまいましたが、今年初めての記事です。 今年も引き続き春のパン祭りシール点数集計をやっていきます。 去年の3月から始めて、色々寄り道しながらゆっくり進めてきましたが、 今年の春のパン祭りに間に合うように完成させたいな。 今回の内容 前回テンプレート画像を用意したので、今回は基本的にテンプレートマッチングを実施するだけです。 ただし、台紙を斜めから撮影することによる変形も考慮したいと思います。 以下進めていきます。 輪郭の変形 シール台紙をカメラで撮影するとき、人間がやるのであれば多少なりともカメラの角度がシール台紙の垂直軸からずれます。そう…

  • OpenCVやってみる- 31. テンプレート画像作成

    春のパン祭りシール点数集計の続きです。 前回のおさらい 前回までで、ひとまず点数文字の輪郭が取れるようになりました。 Hue,Saturation情報を使って2値化 階層認識ありで輪郭を検出、最上位階層の1つ下の輪郭を検出 ここから、テンプレートマッチングを使って文字の認識、識別をしていきたいと思います。 今回はテンプレート画像を用意するところまでとします。 検討内容 シール画像でのテンプレートマッチングをやりますが、いくつか考慮の必要なことが。 どうやってテンプレート画像を用意するか シールのデザインが年ごとに違ったので、その辺も要検討かな。 輪郭のままでテンプレートマッチングするか? 輪郭…

  • OpenCVやってみる- 30. 点数文字輪郭検出3

    引き続きの春のパン祭りシール点数集計。 前回の結果再確認 前回の結果をよく見ると、点数文字の輪郭をきちんと取れていない部分がありました。 3つ目の画像で、中央上部の'1'、'2'の輪郭が取れていません。 対応を検討します。 様子チェック まずは問題の画像を見てみます。 import cv2 import numpy as np %matplotlib inline from matplotlib import pyplot as plt img3 = cv2.imread('harupan_200317_1.jpg') img3 = cv2.resize(img3, None, fx=800.…

  • OpenCVやってみる- 29. 点数文字輪郭検出2

    春のパン祭りシール点数集計の続きです。 今回の内容 前回、春のパン祭り画像から点数文字の輪郭を取得できましたが、まだ1画像でしか試していないので、 他の画像でもやってみます。 関数化 いつも通りの手順ですが、内容が増えてきたので、関数化しておきたいと思います。 関数の内容は、 画像のリサイズ 2値化 輪郭検出 になります。 リサイズについて 画像のリサイズについては、今までは固定の縮小率にしていましたが、今回はリサイズ後の画像サイズの目標を設定して、それに向けたリサイズをするようにします。 前回も少し考えたように、 シール台紙は画像全体の縦横半分程度は写るようにする シールが縦横に5個ずつ並ぶ…

  • OpenCVやってみる - 28. 点数文字輪郭検出

    前回の続きです。 春のパン祭り点数集計を進めていきます。 方針再検討 前回の結果を振り返りつつ、改めて方式を検討します。 前回の状況 Hue画像での2値化から、シール領域の輪郭取得を実施した シールの重なりにより、輪郭どうしがつながってしまっていた 輪郭がつながってしまった件について、Watershedアルゴリズムも考えていましたが、参考サイトを見ると、まずシール領域の中心付近の領域を取得して、そこから領域を広げていきながら境界を見つける、という処理のよう。 前回の画像を見ると、収縮処理や距離変換でシール領域の中心を見つけるのは難しそう。 ということでWatershedアルゴリズムもやってみた…

  • OpenCVやってみる - 27. シール外形検出

    前回の内容 春のパン祭り点数集計で、最初に台紙外形の検出をすることを考えていましたが、どうも難しそうなので諦める方向で。 前に考えた手順は、 台紙外形を取得する 射影変換をするのと、スケーリング(台紙を基準として画像サイズを調整する)に必要 射影変換実施 シール外形、中心点取得 シール位置でテンプレートマッチング というものですが、台紙外形取得と射影変換は諦めます。 それに代わる変換処理が必要ですが、 シール外形を楕円で近似、楕円の軸方向に圧縮、伸張する シール外形サイズから画像スケーリング という手でどうかと考えました。 ということで、改めて手順を書くと、 シール外形取得 シール外形を楕円で…

  • OpenCVやってみる - 26. 台紙外枠検出その2

    前回の続きになります。 おさらい 前回までのおさらいです。 以下のような手順で台紙外形取得を試みました。 Cannyエッジ検出実施 輪郭検出(最外周のみ)実施 面積最大の輪郭を選ぶ 輪郭を単純な多角形で近似、四角形になっていればOK 問題だったのは、 背景が複雑なパターンになっていて、最外周輪郭が乱れる 四角形に近似できなかった なぜかよく分からない検出不良 の2つです。 まずは使用データと検出コードを示します。 import cv2 img1 = cv2.imread('harupan_190428_1.jpg') img2 = cv2.imread('harupan_190428_2.jp…

  • OpenCVやってみる- 25. 台紙外枠検出

    予告通り、春のパン祭り台紙の外枠検出です。 今後は基本的にJupyter notebookで試した後、markdownでダウンロードしてブログに貼り付ける形になると思います。 台紙外枠の取得 まずは台紙外枠の取得から始めてみたいと思います。 改めてサンプル画像を示します。 import cv2 img1 = cv2.imread('harupan_190428_1.jpg') img2 = cv2.imread('harupan_190428_2.jpg') img3 = cv2.imread('harupan_200317_1.jpg') img4 = cv2.imread('harupan…

  • OpenCVやってみる - 24. Jupyter notebook使ってみた

    コマンドプロンプト上でずっとやっているのも大変なので、Jupyter notebookを使ってみました。 見た目もよくなりそう。 Jupyter notebook 使い方 Anacondaをインストールすると、一緒にJupyter notebookが入ってきます。 Windows10環境で使っていますが、検索バーに入力すると出てきました。 起動すると、いつも使っているブラウザが開きます。 デフォルトではWindowsのユーザディレクトリが開くようです。 適当な作業ディレクトリを作って移動、New > Python3 と選択すると、新しいノートブックが作成されて開きます。 コードを書いて実行でき…

  • OpenCVやってみる - 23. シール点数集計検討

    今回はOpenCVネタです。 いままでチュートリアルを追ってきましたが、そろそろ本題の春のパン祭り集計を考えていこうかと。 使えそうな手 今までチュートリアルを見てきた中で、いくつか有用そうなテクニックがありました。 射影変換 台紙を真正面から撮影していなくても、真正面からの視点に変換できます。 ロバスト性を上げるのにいいかと。 ヒストグラム、2値化 春のパン祭りだと、年によりますがシールの色が濃いピンク色、台紙はだいたい白となっていて、この色味でシール領域、台紙領域を区別できます。 画像の平滑化 普通の2Dフィルタだとシールのエッジもぼけてしまいますが、バイラテラルフィルタだといい感じにエッ…

  • ZYBOを進める - 28. Petalinux再設定

    前回カスタマイズしたFSBLを作ったので、これをPetalinuxプロジェクトで取り込みます。 また、MACアドレス関連の設定もPetalinuxで行います。 さらについでに、ルートファイルシステムをSDカードに設定します。 Petalinux作業 petalinux-configコマンドを実行して、以下のように設定します。 ルートファイルシステム設定 Image Packaging Configuration ---> Root filesystem type と進みます。 "EXT4 (SD/eMMC/SATA/USB)"を選択します。 前のツールバージョン(2017.4)では単に"SD …

  • ZYBOを進める - 27. VitisでFSBL作成

    ZYBOの続きです。 今回は、以前にやったFSBLのカスタマイズを、Vitisツールを使ってやってみたいと思います。 このカスタマイズは、ZYBOのEEPROMに入っているMACアドレスを取得するためのものです。 Vitis使うのは初めてですが、どんな感じなのか。 一応Vitis参考を載せておきます。 Zynq-7000 FSBL - Xilinx Wiki - Confluence ひでみのアイデア帳 Vitis起動 Avnet社のガイドに従うと、Vitisのデスクトップアイコンが作成されています。 これをダブルクリックでVitisを起動します。 eclipseベースのツールらしく、ワークス…

  • OpenCVやってみる-22. エピポーラ幾何

    今回は、OpenCVチュートリアルの以下のページを参考に進めてみたいと思います。 OpenCV: Epipolar Geometry エピポーラ幾何の理論はチュートリアルサイトの説明を参照で。 今回のテーマ画像 特徴点検出、特徴量算出 マッチング Fundamental matrix計算 Epipolar line描画 Fundamental matrixの計算について Fundamental matrixについて ここまで 参考 今回のテーマ画像 今回は、春のパン祭り台紙の2視点分の画像でマッチング、Epipolar lineの描画をしてみたいと思います。 似たような特徴点が複数あるので難し…

  • ZYBOを進める - 26. ツールバージョン変更(2020.2)

    前回の続きです。 前回はVivadoプロジェクトでのビットストリーム生成まで行いました。今回はこれをPetalinuxプロジェクトに取り込みます。 Petalinuxツールでの手順 Petalinuxプロジェクトの作成 まずはPetalinuxプロジェクトの作成。 入力: petalinux-create --type project --template zynq --name Zybo-base-linux-peta 実行結果: noki@noki-VirtualBox:~/work/petalinux$ petalinux-create --type project --template…

  • ZYBOを進める - 25. ツールバージョン変更(2020.2)

    久しぶりにZYBOのほうを進めたいと思います。 内容 前回(既に1年前…)までは VMWare + Ubuntu18.04 Vivado 2017.4 Petalinux 2017.4 の環境を使っていました。 ただ、今回はXilinxツールのVitisも使っていきたいと思っていて、使用するツールバージョンを新しくしたいと思います。 ツールバージョン変更作業 仮想マシン環境作り直し 最近Avnet社のUltra96ボードもいじろうとしています。 こちらでは以下のサイトにリファレンスデザインやガイドがありますが、こちらのガイドに従うと、VirtualBoxを使う流れになります。ZYBO開発のほう…

  • OpenCVやってみる-21. 特徴点マッチングとHomography

    今回もだいたいチュートリアル通りの内容です。 前々回と前回で、違う視点から同じ対象を撮影した2つの画像での点の対応を見つけることができました。 この結果を使って、射影変換の行列を計算し、画像の視点変換をすることができます。これをやってみます。 OpenCV: Feature Matching + Homography to find Objects 特徴点のマッチングとHomographyによる物体検出 — OpenCV-Python Tutorials 1 documentation 使用画像 前々回、前回と同じシャルトル大聖堂の画像3つです。 特徴点マッチング 前々回にやったのと同じことを…

  • OpenCVやってみる-20. 特徴点のマッチング(FLANN)

    前回のやり残しで、FLANNでの特徴点マッチングをやります。 OpenCV: Feature Matching 特徴点のマッチング — OpenCV-Python Tutorials 1 documentation 概要 前回のおさらいですが、FLANNはFast Library for Approximate Nearest Neighborの略で、近似的に特徴量空間での最近傍点を探索する手法です。総当たりマッチングより高速で実施することができます。 やること 前回はcv2.BFMatcher()でマッチングしましたが、今回はcv2.FlannBasedMatcher()を使います。 これは…

  • OpenCVやってみる-19. 特徴点のマッチング

    今回は特徴点のマッチングです。 今までにやった特徴点検出、特徴量生成を元に、2つの画像を比較、同じものが写っている点を探す、 というような感じです。 2つの画像というのは、具体的にはステレオカメラで撮影した画像だったり、ウォーリーを探せのウォーリーとウォーリーが隠れている絵のようなものになるかと。 OpenCV: Feature Matching 特徴点のマッチング — OpenCV-Python Tutorials 1 documentation 概要 今回のチュートリアルでは、2種類のマッチング手法が紹介されています。 総当たりマッチング 2画像の特徴点の組み合わせ全てを調べて、最も類似性…

  • OpenCVやってみる-18. ORBによる特徴点検出、特徴量記述

    前回の予告通り、ORBをやってみます。 OpenCV: ORB (Oriented FAST and Rotated BRIEF) ORB (Oriented FAST and Rotated BRIEF) — OpenCV-Python Tutorials 1 documentation ざっくり紹介、理論 SIFTやSURFは特許を取られていて自由に使えない その代替としてOpenCV Labsで考案された 基本的にはFASTによる特徴点検出と、BRIEFによる特徴量記述の組み合わせ、ただし以下の改良がある FAST自体は回転を考慮しない、ORBでは特徴点の回転角を計算する BRIEFでの…

  • OpenCVやってみる-17. BRIEF

    今回はBRIEFをやってみます。 OpenCV: BRIEF (Binary Robust Independent Elementary Features) ざっくり理論 BRIEFは画像中の特徴点の特徴量を生成する方式のひとつです。 SIFTやSURFでは、特徴点の特徴量を表すのにそれなりに大きなデータ量(1点あたりSIFTで512byte、SURFで256byte)が必要になりますが、メモリサイズが大きくなるし、特徴点同士の比較演算も重くなる。 チュートリアルサイトの説明を読むと、「平滑化した画像パッチ」というのが書かれていますが、 注目する特徴点近傍の画素の集まり、という解釈でいいのかな…

  • OpenCVやってみる-16. FASTアルゴリズムによる特徴点検出

    前回の続き、FASTアルゴリズムを試します。 コーナー検出のためのFASTアルゴリズム — OpenCV-Python Tutorials 1 documentation ざっくり理論 画像の各画素について、これを中心として周長16ピクセルになる円周(半径およそ3ピクセル) 上の画素を調べ、決まった数以上の連続した画素で中心輝度を上回っている、または下回っている、という状況であれば、そこをコーナーと判定するようです。 限られた計算資源でも高速にコーナー検出ができる、というのがメリットのよう。 高速テストというのがあり、まず円周上の4画素を調べて、コーナーの可能性がなければ 他の画素のチェックは…

  • OpenCVやってみる-15. SURFによる特徴点検出

    前回のSIFTに続いて、今度はSURFでの特徴点検出です。 SURF (Speeded-Up Robust Features)の導入 — OpenCV-Python Tutorials 1 documentation SURFはSIFTに比べて高速化を目指したアルゴリズムとのこと。 発表は2006年になります。特許が取られていて、まだ終了していないようです。 画像処理の数式を見て石になった時のための、金の針 - Qiita またもやざっくりまとめをすると、 SIFTでのLaplacian of Gaussianの代わりにBox filterを使ってのアルゴリズム、積分画像を使って高速に計算がで…

  • QNAP NAS購入-1

    自分のPCのハードディスク容量がそもそも256GBしかなく、iPhoneで撮った写真(子供の写真)が増えてきたので、NASを買ってみました。 PCデータとiPhone写真のバックアップが目的。 NAS型番、仕様 購入したのはQNAP社のTS-230。 購入の決め手としては、 RAID1構成にしたい、HDDの交換もできること HDDが死んでもある程度大丈夫なようにしておきたいので バックアップ用ポータブルHDDが壊れてデータ失ったことがあるので… iPhoneからいい感じに写真のアップロードができること IODATA、BUFFALOなどでHDD込みで安いNASがありますが、スマホアプリがいまいち…

  • OpenCVやってみる-14. SIFTによる特徴点検出

    今回はSIFTを扱います。 SIFT (Scale-Invariant Feature Transform)の導入 — OpenCV-Python Tutorials 1 documentation SIFTは、2004年にブリティッシュコロンビア大学のD.Loweが発表したもので、 キーポイントの検出、特徴量の計算を行うアルゴリズムとのことです。 おおざっぱに自分なりにまとめると、 ステレオ撮影画像や動画での物体追跡では、複数画像間で対応する点を見つける必要があるが、 これに使える画像上の点(特徴点)を見つけ、また、その点の特徴ベクトルを生成するアルゴリズム Harrisのコーナー検出でも特…

  • OpenCVやってみる-13. Harrisコーナー検出

    今回はHarrisコーナー検出をやります。 今更ですが、チュートリアルサイトの順番通りでなく、多少飛ばしている部分もあります。 Harrisコーナー検出 — OpenCV-Python Tutorials 1 documentation Harrisコーナー検出 理論はチュートリアルサイトに書いてある通りです。 今回はcv2.cornerHarris()関数をさくっと試してみます。 画像は前回と同じ。 import cv2 img1 = cv2.imread('harupan_200317_1.jpg') img2 = cv2.imread('harupan_210402_1.jpg') im…

  • OpenCVやってみる-12. ハフ変換(円検出)

    どんどん続きを進めます。 次はハフ変換による円検出。 ハフ変換による円検出 — OpenCV-Python Tutorials 1 documentation ハフ変換による円検出 円上の点は、以下の式を満たします。 直線検出のときと同様、この式のパラメータ()の空間に、 その円上に乗った点の数をマッピングする感じかと。 直線検出と比べてパラメータが1つ多いため、単純に全パラメータ空間を 走査するのは非効率ということで、何がしかの手法を使っているようです。 前回と同じ画像を対象とします。 シールの領域を取得できるといいなと。 import cv2 img1 = cv2.imread('haru…

  • OpenCVやってみる-11. ハフ変換

    今回はハフ変換をやってみます。 ハフ変換による直線検出 — OpenCV-Python Tutorials 1 documentation ハフ変換 ハフ変換は2値画像を直線のパラメータ空間に持っていくような変換、 ということでいいのかな。 空間中の直線は、以下の式で表すことができます。 変換後の空間の各点には、元画像の中でその直線に乗った点の数が入ります。 これを使って、閾値以上の値を得たパラメータの直線が検出された直線、とすることができます。 実践 春のパン祭りの台紙外枠を検出してみたいと思います。 3種類用意しています。 import cv2 img1 = cv2.imread('har…

  • OpenCVやってみる-10. テンプレートマッチング

    かなり時間が空いてしまいました… 引き続きOpenCVのチュートリアルをやっていきたいと思います。 今回はテンプレートマッチングをやろうかと。 春のパン祭りシール点数集計的には結構使えそうな内容です。 テンプレートマッチング — OpenCV-Python Tutorials 1 documentation テンプレートマッチング cv2.matchTemplate()関数を使います。 処理内容は、 この関数はテンプレート画像を入力画像全体にスライド(2D convolutionと同様に)させ,テンプレート画像と画像の注目領域とを比較します. とのことです。 詳細は以下に記載があります。 物体…

  • OpenCVやってみる-9. 輪郭検出

    OpenCVチュートリアルの続きです。 OpenCVにおける輪郭(領域) — OpenCV-Python Tutorials 1 documentation とりあえず輪郭検出、表示 cv2.findContours()関数で、輪郭を検出することができます。 詳細はともかく、やってみます。 2値画像に対しての処理となること、白い物体と黒い背景があり、物体の輪郭を検出するということで、2値化のチュートリアルのところでやった画像を使ってみます。 HSV値からシール領域、台紙領域(および点数数字)を検出したものです。 import cv2 img1 = cv2.imread('harupan_200…

  • OpenCVやってみる-8. エッジ検出

    OpenCVのチュートリアル通りに進めます。 今回の内容はシール点数集計に役立ちそうです。 画像の勾配 — OpenCV-Python Tutorials 1 documentation Canny法によるエッジ検出 — OpenCV-Python Tutorials 1 documentation Sobelフィルタ、Laplacianフィルタ Sobelフィルタ、Laplacianフィルタはいずれもカーネルと画像の畳み込み演算を行い、画像中の輝度勾配の大きさを示す画像を生成します。 Sobelフィルタは、画像の縦方向、横方向それぞれの輝度勾配を計算します。 【画像処理】ソーベルフィルタの原…

  • OpenCVやってみる-7. モルフォロジー変換

    今回は、チュートリアル通り、モルフォロジー変換です。 モルフォロジー変換 — OpenCV-Python Tutorials 1 documentation モルフォロジー? モルフォロジー(morphology)とは、 「一般に、形態、構造をいう。」 モルフォロジーとは - コトバンク だそうです。 どゆこと? OpenCVチュートリアルの説明によると、モルフォロジー変換は「画像上に写っている図形に対して作用するシンプルな処理」 とのこと。 チュートリアル内容を読みましたが、うまく端的な表現が思いつかない… ひとまず、収縮(Erosion)、膨張(Dilation)という2種類の基本的な処理…

  • OpenCVやってみる-6. 画像の平滑化

    前回の続きをやっていきます。 チュートリアルのタイトルは「画像の平滑化」で、内容としては画像にフィルタをかけて平滑化する、というものになります。 画像の平滑化 — OpenCV-Python Tutorials 1 documentation ターゲット画像 前回と同じ画像を使います。 >>> img1 = cv2.imread('harupan_200317_1.jpg') >>> v, h = img1.shape[:2] >>> size = (int(h/10), int(v/10)) >>> img1 = cv2.resize(img1, size, interpolation=cv…

arrow_drop_down

ブログリーダー」を活用して、勉強しないとな〜blogさんをフォローしませんか?

ハンドル名
勉強しないとな〜blogさん
ブログタイトル
勉強しないとな〜blog
フォロー
勉強しないとな〜blog

にほんブログ村 カテゴリー一覧

商用