Pynote

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

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::…

OpenCV - cv::Rect 長方形を表すクラス

長方形を表すクラス cv::Rect について

OpenCV - cv::Size 大きさを表すクラス

大きさを表すクラス cv::Size について

OpenCV - cv::Point 点を表すクラス

点を表すクラス cv::Point について

OpenCV - カメラモデル

概要 カメラキャリブレーションで出てくるカメラモデルについて紹介する。 概要 カメラモデル カメラの内部パラメータ 焦点距離 カメラ座標と画像座標 Skew カメラの外部パラメータ 射影変換

OpenCV - 大津の手法/判別分析法

概要 大津の手法 (Otsu method) は2値化を行う際の閾値を画像に応じて自動的に決めるアルゴリズムである。 2値化を輝度値のヒストグラムを2クラス分類する問題と考えて解くので、判別分析法とも呼ばれる。 概要 アルゴリズム クラス の平均と分散 クラス の…

OpenCV - 画像2値化の閾値の決め方

概要 画像の2値化処理では閾値の値によって、得られる結果が変わってくる。 画像の注目する物体が写っている領域とそれ以外の領域をうまくわける閾値を選ぶ必要がある。 概要 手動で確認しながら決める 画像の輝度値のヒストグラムから決める pタイル法 参考…