Pythonでいろいろやってみる

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

numpy

セル・オートマトンによる感染シミュレーション

セル・オートマトンは格子状のセルと単純な規則による離散的計算モデルで、あるセルの時間tにおける状態、および近傍セルの時間tにおける状態により、あるセルの時間t+1(次世代)における状態が決まります。ルールを確定的ではなく確率的に変えた確率的セルオ…

風景写真をクッキリさせる(空を青く、緑を鮮やかに)

ガンマ補正は画像の特定チャンネルの強調などに使われる非線形補正です。Pythonの画像処理ライブラリOpenCVで青空と草むらの写った写真のすべての画素値に対してガンマ補正し青空と草むらを鮮やかにします。

numpyで乱数生成(一様分布、正規分布)

numpyの乱数生成関数であるrandomを用います。一様分布、標準正規分布(平均0、分散1である正規分布)および任意の平均・標準偏差を持つ正規分布を生成し、ヒストグラムで表示します。 使ったメソッド numpy.random : 乱数生成 環境 windows10 home Anaconda 3…

食べログ全国ランキングTOP20の星をジャンル別に比較する

食べログの全国ランキングTOP20の星(レーティング)をフレンチ、ラーメン、寿司、天ぷらの4ジャンルで集計・比較し、どのような傾向にあるかを調べます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 コード %matplotlib inline # …

特定の色を別の色に変換する(赤い服を緑の服に変える)

赤い服を着た人物写真の服の色を緑や青に変えます。Pythonの画像処理ライブラリOpenCVで画像をBGR色空間からHSV色空間に変換し、ライブラリnumpyのwhereメソッドにより色相Hが赤の範囲にある画素についてHをシフトさせることで赤を緑や青に変換します。

画像を点描画に変換する

画像を点描画に変換します。飛び飛びに円を描いて点描化します。円の色を設定するために、元画像の縮小画像を作りその配列から元画像の飛び飛びの色を取得します。 使った関数・メソッド cv2.imread() : 画像ファイルの読み出し ndarray.shape() : ndarrayの…

コラージュ写真を作る

写真から人物を切り抜いて、別の写真に貼り付けます。 人物写真から、人物が白(1)・それ以外が黒(0)のマスク、人物が黒(0)・それ以外が白(1)のマスクを生成しそれぞれを人物、背景と要素のかけ合わせを行い 、2つの画像を足し合わせることでコラージュ画像を…

ビンゴカードを作る

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

画像にグリッド線を引く

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

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

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

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

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

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

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

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

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

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

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

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

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

方程式を解く

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

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

やること 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…

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

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

円を描画する

やること 横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…