Pythonでいろいろやってみる

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

2019-01-01から1年間の記事一覧

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

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色の画像を生成し別ウィンドウで表示する キー入力で表示用ウ…

白画像を作成する

やること 横600px縦400pxの白1色の画像を生成し別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 numpy.zeros : 全要素が0な新しい配列の生成 cv2.imshow : 画像を別ウィンドウに表示する 環境 windows10 home Anaconda 3/ jupyte…

黒画像を作成する

やること 横600px縦400pxの黒1色の画像を生成し別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 numpy.zeros : 全要素が0な新しい配列の生成 cv2.imshow : 画像を別ウィンドウに表示する 環境 windows10 home Anaconda 3/ jupyte…

画像サイズを変更する

やること ファイル名を指定して画像ファイル読み出す 画像サイズを変更 変更後の画像を別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 cv2.imread : 画像ファイルの読み出し cv2.resize : 画像サイズの変更 cv2.imshow : 画像を…

画像を連結する

OpenCVで画像を連結し一つの画像にします。縦に連結する場合はcv2.vconcat関数を用います。この場合画像の横幅が等しくないとエラーになります。また横に連結する場合はcv2.hconcat関数を用います。この場合画像の高さが等しくないとエラーになります。 やる…

画像を反転する

やること ファイル名を指定して画像ファイル読み出す 画像を反転する 反転した画像を別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 cv2.imread : 画像ファイルの読み出し cv2.flip : 画像の反転 cv2.imshow : 画像を別ウィンド…

画像の一部分を切り抜き表示する

やること ファイル名を指定して画像ファイル読み出す 画像から指定の範囲を切り抜く 切り抜いた画像を別ウィンドウで表示する キー入力で表示用ウィンドウを破棄し終了 使った関数 cv2.imread : 画像ファイルの読み出し cv2.imshow : 画像を別ウィンドウに表…

画像を二値化して輪郭抽出、輪郭の個数を表示する

やること ファイル名を指定して画像ファイル読み出す ファイル名を指定して画像ファイルをグレースケールで読み出す グレースケール画像を平均化(ぼかし)処理する ぼかした画像を二値化する 二値化画像から輪郭抽出し、輪郭の個数を表示。元画像に輪郭を緑で…