Pynote

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

OpenCV

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

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

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

概要 FindContours() で抽出した輪郭に対して行う以下の処理を紹介する。 輪郭をより少ない点で構成される輪郭で近似する。 輪郭を囲む長方形を求める。 輪郭を囲む回転した長方形を求める。 輪郭の面積を求める。 概要 輪郭を抽出する。 輪郭を近似する。 …

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

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

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

概要 2値画像から findContours() を使用して輪郭抽出を行う方法について紹介する。 概要 findContours() サンプルコード mode 引数 hierarchy の構造 cv2.RETR_EXTERNAL cv2.RETR_LIST cv2.RETR_CCOMP cv2.RETR_TREE method 引数 参考

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…

OpenCV - inRange による範囲指定で2値化する方法について

概要 OpenCV の inRange による範囲指定で2値化する方法について紹介する。 概要 試した環境 inRange() 引数 返り値 サンプルコード グレースケール画像 RGB 画像 HSV 画像

OpenCV - cv::Mat と numpy 配列の対応まとめ

概要 OpenCV を C++ で使う場合は画像は cv::Mat として扱うが、 Python で使う場合は numpy array として扱う。 numpy array と cv::Mat ではインタフェースが幾分異なるため、その対応をまとめた。 概要 プロパティ 行数、列数、チャンネル数 カラー画像か…

OpenCV - 行列の加減乗除及び Utility 関数

概要 OpenCV の配列の加減乗除及びその Utility 関数についてまとめた。 C++、Python 両方に対応。 概要 試した環境 加減乗除 加算 関数 コード 減算 関数 コード 要素ごとの乗算 関数 コード 要素ごとの除算 関数 コード 比較 関数 コード Utility 関数 abs…

OpenCV - 配列の絶対値、平方根、べき乗、指数関数、対数関数を計算する

概要 OpenCV で行列の絶対値、平方根、べき乗、指数関数、対数関数を計算する方法について紹介する。 C++ 及び Python の両方に対応。 Python では行列は numpy array として扱われるので、OpenCV の関数でなく、numpy の関数を使っても同じ処理が行える。 …

OpenCV - connectedComponents() で連結成分のラベリング

概要 OpenCV の connectedComponents() で連結成分のラベリング (connected component labeling)を行う方法について紹介する。 概要 連結成分のラベリング 引数 返り値 構造情報付きで連結成分のラベリング 引数 サンプルコード 2値画像を読み込む。 連結成…

OpenCV - distanceTransform() で距離変換を行う

概要 OpenCV の distanceTransform() で距離変換を行う方法について紹介する。 概要 画像における距離の定義 距離変換 引数 ラベルマップを生成する。 引数 サンプルコード 参考

OpenCV - 画像を切り抜く方法について

概要 OpenCV で画像の一部を切り抜き、新しい画像を作成する方法について紹介する。 概要 解説 サンプルコード Python グレースケール形式 RGB 形式 C++

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

概要 OpenCV で画像にアフィン変換を適用する関数 warpAffine() について解説する。 この関数を利用することで、画像を回転、拡大縮小できる。また、応用的な使い方として、ある画像を別の画像に貼り付けることもできる。 概要 画像を回転させる。 引数 返り…

OpenCV - 画像座標系における回転、拡大縮小について

概要 画像座標系における回転、拡大縮小について解説し、OpenCV で回転行列を作成する方法を紹介する。 作成した回転行列で画像を回転させるには、以下の記事を参照されたい。pynote.hatenablog.com 概要 画像座標系での回転行列、拡大縮小行列 回転行列を作…

OpenCV - エッジの検出、微分フィルタ

概要 エッジ検出の理論及び OpenCV のコードについて 概要 試した環境 エッジ検出とは 微分 水平方向の微分フィルタ 垂直方向の微分フィルタ Prewitt フィルタ Sobel フィルタ 参考

OpenCV - モルフォロジー演算について

概要 モルフォロジー演算は主に二値画像を対象としたいくつかの非線形な演算を指す。 二値画像からノイズを削除したり、輪郭を抽出するのに役立つ。 概要 試した環境 構成要素 例 構成要素の作成 画像の端のピクセル 収縮 膨張 高度なモルフォロジー変換 演…

OpenCV - 画像の統計量を計算する

概要 画像から最小値、最大値、平均値、中央値、最頻値、分散、標準偏差といった各種統計量を計算する。 概要 試した環境 統計量 最小値 関数 コード 最大値 平均値 関数 コード 中央値 最頻値 分散 関数 コード 参考

OpenCV - 画像のヒストグラムを表示する

概要 画像のヒストグラムとは、横軸に画素値、縦軸に各画素値の頻度をとったヒストグラムである。 概要 試した環境 コード グレースケール画像 RGB画像 参考

OpenCV - cv::Mat の各種プロパティ

概要 cv::Mat の各種プロパティについて紹介する。 概要 試した環境 プロパティの一覧 行列の形状 (行数、列数、次元数) 行列の要素数 行列のバイト数 行列の型 行列の性質 参考文献

OpenCV - cv::Mat で部分行列を作成する方法

概要 cv::Mat の部分行列を作成する方法について紹介する。 概要 試した環境 部分行列を作成する方法の一覧 cv::Mat の行及び列のインデックス データの共有 行及び列をそれぞれ範囲指定して部分行列を作成する cv::Rect で指定して部分行列を作成する 行ま…

OpenCV - cv::Mat と他のオブジェクト間の型変換について

概要 cv::Mat と他のオブジェクト間の型変換について紹介する。 概要 試した環境 変換一覧 cv::Mat std::vector cv::Mat cv::Matx cv::Mat cv::Vec cv::Mat cv::Mat cv::Point3_ 別の型に変換する 参考文献

OpenCV - cv::Mat の初期化方法について

概要 cv::Mat の初期化方法について紹介する。 概要 試した環境 初期化方法 指定した配列で初期化した行列を作成する。 関数 コード MatCommaInitializer_ で初期化する。 関数 コード 仕組み すべて同じ値で初期化した行列を作成する。 関数 コード すべて …

OpenCV - cv::Mat のコンストラクタについて

概要 OpenCV のコンストラクタについて整理する。 概要 試した環境 コンストラクタ 空の行列を作成する (2), (3) 大きさ及び型を指定して行列を作成する (4), (5) 大きさ、型及び値を指定して行列を作成する (6), (7) 大きさ、型及び値を指定して行列を作成…

ピクセルごとの論理演算

ピクセルごとの論理演算について 2つの2値化されている画像を入力として、ピクセルごとに論理演算を行うと、新たな画像を生成できる。 キーワード 画像2値化 (Image Thresholding, Binarization) 画像分割 (Image Segmentation) 手順 今回使用する入力画像を…

OpenCV - 記事一覧

About OpenCV に関する記事一覧。 一覧 基本構造 cv::Rect 長方形を表すクラス cv::Size 大きさを表すクラス cv::Point 点を表すクラス 基本演算 配列の絶対値、平方根、べき乗、指数関数、対数関数を計算する 行列の加減乗除及び Utility 関数 cv::Mat cv::…