Pynote

Python、機械学習、画像処理について

OpenCV

OpenCV - ハフ変換 (Hough Transform) で円を検出する方法 (HoughCircles)

概要 OpenCV の関数 HoughCircles で画像から円を検出する方法について紹介する。 概要 関連記事 HoughCircles サンプルコード ipywidget

OpenCV - ハフ変換 (Hough Transform) で直線を検出する方法

概要 OpenCV でハフ変換 (Hough transform) で画像から直線を検出する方法について紹介する。 概要 HoughLines サンプルコード 2値化する。 ハフ変換で直線検出する。 描画する。 ipywidget HoughLinesP ipywidget ハフ変換の仕組み 任意の直線は、 で表せる…

OpenCV - Canny 法で画像からエッジを検出する。

概要 OpenCV でCanny 法で画像からエッジを検出する方法について紹介する。 概要 Canny エッジ検出 OpenCV サンプルコード パラメータ調整について ipywidget

OpenCV - 画像の明るさやコントラストを変更、ガンマ補正など

概要 OpenCV で画像の明るさやコントラストを変更する方法について紹介する。 概要 積和演算で明るさ、コントラストを変更する。 コード 各パラメータによる結果 ipywidget で変更する。 ガンマ補正 コード 各パラメータによる結果 ipywidget で変更する。

Jupyter Notebook / Jupyter Lab で画像をインラインで表示する方法

概要 Jupyter Notebook / Jupyter Lab で画像をインラインで表示する方法を紹介する。 概要 numpy 形式の画像 PIL 形式の画像

画像認識 - face_recognition ライブラリで顔認識を試す。

概要 face_recognition ライブラリを使って、顔認識を行う方法を紹介する。pynote.hatenablog.com Github ドキュメント 概要 顔認識 顔の特徴

OpenCV - 画像にモザイクをかける方法について

概要 OpenCV を使用して、モザイク処理を行う方法を紹介する。 概要 モザイク処理をする方法 画像の一部にモザイクをかける。 顔検出して、モザイク処理を行う。

画像処理 - face_recognition ライブラリで顔検出を試す。

概要 顔認識が行える face_recognition ライブラリを紹介する。 dlib という機械学習ライブラリをラップする形で構築されており、最先端の顔認識技術を簡単に利用することができる。 Github ドキュメント 概要 インストール 顔検出 基本的な使い方 検出に CN…

OpenCV - 画像処理のパラメータを決めるには、ipywidgets が便利

概要 OpenCV で各種画像処理を行うためには決めなければならないパラメータがいくつか出てくる。 Notebook 上でスライダーやプルダウンメニューを使えるようにする GUI ウィジェットである ipywidgets を組み合わせることで、画像処理の結果を確認しながら、…

OpenCV - imread()、imwrite() で画像をファイルに入出力する

概要 OpenCV で imread()、imwrite() で画像をファイルに入出力する方法について 概要 画像を読み込む。 画像の読み込みに失敗する場合 画像を書き込む 画像をエンコード/デコードする。

OpenCV - matchShape() で輪郭の類似度を計算する。

概要 matchShape() で2つの輪郭の類似度を算出し、マッチングを行う方法について 概要 関連記事 輪郭の抽出する。 結果を描画する。 matchShape()

OpenCV - 2枚の画像の類似度を compareHist() で計算する。

概要 OpenCV の compareHist() を使用して画像同士の類似度を計算する方向についてpynote.hatenablog.com 概要 compareHist() サンプルコード

OpenCV - 画像に適用するアフィン変換について

概要 画像に適用するアフィン変換について整理する。 概要 関連記事 標準座標系と画像座標系 主な変換一覧 変換の例 拡大縮小 (scaling) 回転 (rotation) 平行移動 反転 せん断 (sheer) 画像にアフィン変換を適用する流れ

OpenCV - 画像をグリッド上に分割する方法について

概要 画像をグリッド上に分割する方法について紹介する。 概要 分割数を指定して、分割する場合 分割後のサイズを指定して分割する場合 分割した画像を元に戻す

OpenCV - floodFill() を使った塗りつぶし、背景の透過など

概要 OpenCV の floodFill() を使って塗りつぶし、背景の透過を行う方法を紹介する。 概要 floodFill() サンプルコード 塗りつぶしを行う。 マスクを使用した例 指定した色を透過する。

Python - インデックスカラー画像を読み込む方法について

概要 インデックスカラー画像を PIL で読み込み、各画素のインデックスの値及びカラーパレットを参照する方法について紹介する。 Deep Learning のセグメンテーションタスクでは、正解データがインデックスカラー画像で配布されていることが多いので、色では…

OpenCV - マスクを使用した画像の合成方法について

概要 背景画像に前景画像の対象物のみを貼り付ける方法について、紹介する。 概要 手順 背景画像及び前景画像を読み込む。 マスク画像を作成する。 背景画像と前景画像を合成する。

OpenCV - 描画系の関数まとめ / 長方形、円、テキストを画像に描画する。

概要 OpenCV の描画系関数をサンプルコード付きでまとめた。 概要 描画系の関数の共通の仕様 矢印を描画する。 arrowedLine() サンプルコード 円を描画する。 circle() サンプルコード 塗りつぶさないで円を描画する。 塗りつぶして円を描画する。 輪郭を描…

OpenCV - Windows で OpenCV を導入する方法 (2018年10月版)

概要 Windows で OpenCV 3.4.1 を opencv-contrib 付きで導入する方法を紹介する。 概要 手順 1. ソースコードをダウンロードする。 2. CMake GUI でプロジェクトファイルを生成する。 OpenCV が使えるか試す。 トラブルシューティング cmake の段階で find_…

OpenCV - VideoCapture / VideoWriter で動画の読み込み/書き込みを行う。

概要 OpenCV の VideoCapture / VideoWriter で動画の読み込み/書き込みを行う方法について紹介する。 概要 Web カメラから映像を取得する。 動画を読み込む。 動画を書き込む。 各フレームを画像として、保存する。 画像から動画を作成する。 動画の各種プ…

OpenCV - アルファブレンドで画像を合成する方法

概要 OpenCV で2枚の画像をアルファブレンドして合成する方法を紹介する。 概要 アルファブレンドとは OpenCV を利用したアルファブレンド サンプルコード 矩形外をグレーアウトする。

OpenCV - 輪郭を近似する、面積を求める、Bounding Box を求める方法について

概要 FindContours() で抽出した輪郭に対して行う以下の処理を紹介する。 輪郭の抽出については下記の記事を参照されたい。pynote.hatenablog.com 輪郭の周囲の長さを計算する。[arcLength()] 輪郭の面積を計算する。[contourArea()] 輪郭を近似する。[appro…

OpenCV - 画像をリサイズする方法

概要 OpenCV で画像をリサイズする方法について紹介する。 概要 resize() 基本的な使い方 アスペクト比を固定して、幅が指定した値になるようリサイズする。 アスペクト比を固定して、高さが指定した値になるようリサイズする。 指定した大きさまたは倍率で…

OpenCV - findContours() による輪郭抽出

概要 2値画像から findContours() を使用して輪郭抽出を行う方法について紹介する。 輪郭を抽出したあとの処理については下記を参照されたい。pynote.hatenablog.com 概要 findContours サンプルコード 輪郭を抽出する。 輪郭を描画する。 mode 引数 hierarc…

OpenCV - Non Maximum Suppression について

概要 物体検出で用いられる Non Maximum Suppression の仕組み及び実装について紹介する。 概要 Non Maximum Suppression 短形の表現 Overlap Ratio Non Maximum Suppression の処理 閾値の設定 実装 モジュールを import する。 画像を読み込む。 短形を描…

OpenCV - フィルタリング / 畳み込みについて

概要 フィルタリングは、画像処理の分野で画像から特徴を抽出したり、画像の性質を変化されるために行われる処理である。 フィルタリングの仕組み及び OpenCV を利用したコードを紹介する。 概要 フィルタリング 数式による表現 フィルタリングの例 OpenCV …

OpenCV - Watershed アルゴリズムで物体の輪郭抽出を行う

概要 OpenCV の Watershed アルゴリズムで物体の輪郭抽出を行う方法について紹介する。 概要 試した環境 手順 画像を読み込む。 大津の手法で2値化する。 opening 処理でノイズを除去する。 そのまま輪郭抽出を行った場合 (失敗例) sure background を抽出す…

OpenCV - テンプレートマッチングの仕組み及び方法について

概要 テンプレートマッチングの仕組み及び方法について紹介する。 概要 テンプレートマッチングの仕組み OpenCV でテンプレートマッチングを行う方法 関数 コード テンプレートマッチング result の解釈 類似度が最も高い位置を描画がする。 類似度が高い位…

matplotlib - OpenCV の画像を matplotlib で表示する方法について

概要 OpenCV の画像を matplotlib で表示する際の注意点について 概要 OpenCV のカラー画像を表示する場合 OpenCV のグレースケール画像を表示する場合 関数化する

OpenCV - カメラキャリブレーションを行う方法

概要 OpenCV でカメラキャリブレーションを行う方法について紹介する。 概要 カメラキャリブレーション 手順 1. キャリブレーション器具を様々な距離、角度から撮影する。 キャリブレーション器具でマーカー検出を行う。 検出した画像座標上の点に対応する3…