Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

2019-03-01から1ヶ月間の記事一覧

AKAZE特徴量による画像マッチング

2つの画像から特徴が一致する部分を見つけます。Pythonの画像処理ライブラリOpenCVのAKAZE(Accelerated KAZE)特徴量検出により2つの画像に含まれる一致する文字を検出します

ビンゴカードを作る

ビンゴカードを作ります。リストからランダムに値を取り出す関数random.sampleを用いて、1~70までの数字の入ったリストから25個の数字をランダムに取り出し、それを5X5のマスに表示し、ビンゴカードを作ります。 こちらの記事の内容を使っています。 画像…

画像のモザイク処理

画像をモザイク処理します。画像を縮小してから元のサイズに拡大することでモザイク状になる仕組みです。拡大コピーでギザギザになるのと同じです。ポイントは拡大時の 補完方法にNearest neighbor(最近傍法)を指定することです。Nearest neighborは拡大画像…

画像にグリッド線を引く

画像に格子状の線を引きます。ndarrayのスライシングはstep(いくつおきの要素を指定するか)を設定できるのでfor文を使わずに飛び飛びの要素を指定できます。例えば img[20:150:40, :, :] = 255とすると、y=20から40ピクセルおきにy=150の手前まで(140まで)、…

CSVファイルを読み込みソートして新しいCSVファイルとして保存する

関東地方の都県名と人口データのcsvファイルを読み出し、人口の少ない順にソートしてその結果を新しいcsvファイルに保存します。 やること csvファイルをndarrayとして読み出す ndarrayをpython標準のリスト形式に変換 リストを人口の少ない順にソート 新し…

月の写真から欠けの程度を定量化する

満月や三日月など満ち欠けの異なる月の写真をopencvで輪郭検出し明るい部分の面積を求めるとともに、外接円の面積を求め、その比から月のかけ具合を定量化します。 やること 月の写真を読み出し二値化、領域検出し月の面積を求める 検出した領域に対する外接…

航空写真の画素B(青)G(緑)R(赤)平均値を求め棒グラフにする

市街地、森林、海などの航空写真に対して画像っ全体のB(青)G(緑)R(赤)の平均値を求めどのような傾向にあるか調べます。 やること 航空写真を4枚読み出し、各写真の画素B(青)G(緑)R(赤)平均値を求める 求めた結果を棒グラフにする 使った関数 cv2.imread : 画…

画像を比較して異なる部分を表示する(間違い探し)

2つの画像のすべての画素について、画素が一致するかどうかをPythonの数値計算ライブラリNumpyのwhereにより調べ画素が異なる部分のみを抽出します。

テンプレートマッチングで類似画像を探す

OpenCVの物体検出手段の一つ、テンプレートマッチングを行います。画像とそこから一部切り出したテンプレート画像を用意します。元画像の中でテンプレート画像と一致する場所を検出します。 関連記事 画像のヒストグラムを比較し類似度を求める AKAZE特徴量…

CSVファイルから読み出したデータで折れ線グラフを描く

やること CSVファイルからデータを読み込み、折れ線グラフを作成します。 使った関数 numpy.loadtxt : テキストファイルを読み出す matplotlib.pyplot.plt : 折れ線グラフのプロット matplotlib.pyplot.legend : 凡例の表示 matplotlib.pyplot.xlabel : X軸…

データから相関係数を求める

「CSVファイルから読み出したデータから散布図を描く」を発展させ、データの相関係数を求めます。散布図の作成、表示もします。 やること CSVファイルを読み出す 読み出したデータの総関係数を求める 読み出したデータを元に散布図を作成、表示する 使った関…

CSVファイルから読み出したデータから散布図を描く

「コード中に記述したデータから散布図を描く」を発展させ、CSVファイルからデータを読み込み、散布図を作成し表示します。 やること CSVファイルを読み出す 読み出したデータを元に散布図を作成、表示する 使った関数 numpy.loadtxt : テキストファイルを読…

コード中に記述したデータから散布図を描く

pythonのグラフ描画ライブラリmatplotlibを使って散布図を描きます。コード中にあらかじめ書かれた地点名、緯度、気温データから緯度vs気温のサンプルを作成します。 やること コード中に記述したデータを元に散布図を作成、表示する 使った関数 matplotlib.…

写真から顔検出をする(人間、猫)

写真から人間と猫の顔検出をします。OpenCVにはあらかじめいくつかのHaar特徴ベースCascade型分類器による機械学習データ(検出器)が付属しており、その学習データとオブジェクト検出関数を用いることで、顔検出が簡単に実現できます。 やること ファイル名を…

方程式を解く

やること 二次方程式を解く 連立方程式を解く 使った関数 sympy.Symbol : 変数の宣言 sympy.solve : 代数方程式の解を求める 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 二次方程式 を解く コード import sympy #sympyのインポー…

斜方投射のシミュレーション

やること 初速度、仰角を入力 位置xと高さyを計算 x,yを出力する x,yをプロットする 使った関数 math.tan : タンジェントの計算 math.radians : 角度(°)を角度(rad)に変換 math.cos : コサインの計算 pow : べき乗の計算 matplotlib.pyplot.scatter : 散布図…

キーボードから文字や数字を入力する

キーボードから2つの文字列を入力し、それらを結合した文字列を表示します。 やること キーボードから文字列を2つ入力する 2つの文字列を結合し表示する 使った関数 input() : 入力から1行読み込み文字列を返す int() : 文字列から整数を生成 float() : 文字…

行列の和、差、積を求める

やること 2X2の行列A,Bを作成し、和、差、積を求める。 使った関数 numpy.array : 新しい行列の生成 numpy.dot : 行列の積を求める 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import numpy as np #numpyをn…

画像のヒストグラムを比較し類似度を求める

Pythonの画像処理ライブラリOpenCVには画素値(輝度)と画素数のヒストグラムを求めるcalcHist関数があります。またcompareHist関数を使うとヒストグラムの類似度が求められます。2つの画像のチャンネル別のヒストグラムを表示し、ヒストグラム類似度を求めま…

画像の輝度をヒストグラム表示する

やること ファイル名を指定して画像ファイルを読み出す 画像の全画素のB(青)G(緑)R(赤)の輝度をヒストグラム化する 使った関数 cv2.imread : 画像ファイルの読み出し cv2.calcHist : 配列のヒストグラム計算 matplotlib.pyplot.plot : グラフを作成 matplotl…

画像を合成する

やること ファイル名を指定して2つの画像ファイルを読み出す 画像を合成し別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 cv2.imread : 画像ファイルの読み出し cv2.addWeighted : 配列の加重合計を求める cv2.imshow : 画像を…

画像をセピア調にする

カラー画像をセピア調にします。セピア調に変換するにはいくつかアルゴリズムがあるようですが、ここでは赤(R)を強調し、青(B)を弱くすることでセピア調に変換します。 関連記事 画像をセピア色に変換する(グレースケール画像を赤く補正する) やること ファ…

画像の色味を変える

カラー画像からB(青)、G(緑)、R(赤)の輝度を個別に0にした画像を作ります。OpenCVで読み込んだカラー画像は 高さX幅X色(BGR) の3次元からなるndarrayに収められるので、[高さ全範囲、幅全範囲、色・青]=0のようにすることで決まった色を抜くことができます。…

円の数を数える

Pythonの画像処理ライブラリOpenCVの領域検出機能を使って画像に含まれる円の数を数えます。findContoursにより領域を検出し、検出した領域の個数から円の数を求めます。

ランダムな位置に複数の円を描画する

やること 横600px縦400pxの黒1色の画像を生成する 黒画像の上に中心がx,y半径が10の水色の塗りつぶした円を描画。xは10~590の範囲のいずれか、yは0~390の範囲のいずれか。 円を10個描画 別ウィンドウで画像を表示 画像をファイルに保存 キー入力で表示用ウ…

ドレミファソラシドを鳴らす

やること ドレミファソラシドを鳴らす 使った関数 winsound.Beep : 周波数と時間を指定してBeep音を鳴らす 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import winsound #モジュールwinsoundのインポート dur…

円を描画する

やること 横600px縦400pxの白1色の画像を生成する 白1色の画像にX20,Y10を左上、X300,Y100を中心、半径100の円を太さ3pxの青い線を描画し別ウィンドウで表示 キー入力で表示用ウィンドウを破棄し終了 使った関数 np.ones : 要素の値が1の新規配列の生成 cv2.…

長方形を描画する

やること 横600px縦400pxの白1色の画像を生成する 白1色の画像にX20,Y10を左上、X590,Y390を右下の角になる長方形を太さ3pxの青い線を描画し別ウィンドウで表示 キー入力で表示用ウィンドウを破棄し終了 使った関数 np.ones : 要素の値が1の新規配列の生成 c…

直線を引く

やること 横600px縦400pxの白1色の画像を生成する 白1色の画像にX20,Y10からX590,Y390まで太さ3pxの青い線を引き別ウィンドウで表示 キー入力で表示用ウィンドウを破棄し終了 使った関数 np.ones : 要素の値が1の新規配列の生成 cv2.line : 直線描画 cv2.ims…

カラー画像を作成する

全面同じ色のカラー画像を作成します。高さ、幅、チャンネルからなる3次元のndarrayを生成し、そのチャンネルに値をあたることでカラー画像を作成します。 やること 横600px縦400pxの青(緑、赤)1色の画像を生成し別ウィンドウで表示する キー入力で表示用ウ…