Pythonでいろいろやってみる

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

画像処理

フォルダ内の写真のファイル名を撮影時刻に変更する

デジカメ等で写真を撮ると「DSC-1234」のように連番のファイル名が付きますが、「DSC-9999」の次は「DSC-0001」となるため、ファイルを連続処理する場合など少し面倒です。ファイルのEXIF情報から撮影時刻を取得し、ファイル名を撮影時刻に変更します。 関連…

国旗の色比率を円グラフにする

TBSのクイズ番組「東大王」で、国旗の色比率を円グラフにしたものを見て国旗を当てる、というクイズをやっていたのを見て同じようなグラフを作ってみました。

徐々に画像がはっきりするgif動画

画像が徐々にハッキリしていくgif動画を作ります。画像処理ライブラリPillowのeffect_spreadで画像をぼかすことができますが、そのぼかし具合を少しずつ減らすことで画像を徐々にハッキリさせます。 関連記事 少しずつ画像がはっきりする動画 環境 windows10…

画像でモザイク画を作る(フォトモザイク)

PythonのライブラリOpenCVで画像を碁盤目状に分割し、それぞれのセルを色味の近い画像に置き換えてモザイク画を作ります

動画からサムネイルを作る

動画から指定のフレームを切り出し文字を入れてサムネイルを作ります。Pythonの画像処理ライブラリOpenCVで動画ファイルの読み出し、指定した秒数のフレームのキャプチャー、明度と彩度の強調を、タイトル文字の描画とリサイズを画像処理ライブラリPillowで…

画像ファイルを指定したファイルサイズまで自動で圧縮する

画像を指定のサイズになるまで自動で圧縮します。Pythonの画像処理ライブラリOpenCVでjpeg品質を指定して画像を保存し、狙いのサイズより大きければjpeg品質を下げて再び保存します。

フォルダ内の画像からスライドショーを作る(スワイプ切り替え)

指定したフォルダ内の画像を読み出しスライドショーを作成します。Pythonの画像処理ライブラリPillowを使って画像のサイズ調整と次の画像が左からジ徐々に現れる効果を作りスライドショーにします。

フォルダ内の画像からスライドショーを作る(ブラックアウト、ホワイトアウト切り替え)

指定したフォルダ内の画像を読み出しスライドショーを作成します。Pythonの画像処理ライブラリPillowを使って画像のサイズ調整と黒画像(白画像)を挟んで次の画像へ徐々に変化する効果を作りスライドショーにします。

フォルダ内の画像からスライドショーを作る(フェード切り替え)

指定したフォルダ内の画像を読み出しスライドショーを作成します。Pythonの画像処理ライブラリPillowを使って画像のサイズ調整と次の画像へ徐々に変化する効果を作りスライドショーにします。

動画をマトリックス風に変換する

動画を映画マトリックスのような緑色の反転したカタカナで置き換えます。画像を一コマずつ取り込んでライブラリOpenCVのエッジ検出でエッジ画像を作成、エッジ部分を反転した緑色のカタカナで置き換えます。

グリーンバックの人物を背景と合成する

グリーンバックの人物画像から人物を抜き出して風景画像に貼り付けます。PythonのライブラリPillowのpointメソッドで色相が緑色の画素を抽出しマスク画像を作成、compositeメソッドで人物画像、風景画像をマスクを使って合成します。

複数の写真から検出した人物を切り抜いて並べる

人物の写った複数の画像から人物部分のみを切り抜いて1枚の画像に集約します。Pythonの画像処理ライブラリOpenCVの人の顔の機械学習データを用いて顔検出を行い顔の位置を特定、その周囲を人物として切り抜いて一枚の画像にします。

電光掲示板のように文章が右から左にスクロールするGIFアニメを作成する

電光掲示板のように文章が右から左にスクロールするGIFアニメを作成します。横長の画像に文章を書きその画像の一部を左から右に切り取りそれを順番に表示することでスクロールを表現します。 関連記事 画像を描画しアニメーションGIFを作成する 字幕がスクロ…

四角の中に円を充てんする

四角い画像に円を充てんします。Pythonの画像処理ライブラリOpenCVでランダムなサイズの円を描画し、描画した円の位置とサイズを記録します。新しく描こうとする円がすでに描画した円と重ならないかチェックし、重ならなければ描画します。

コラージュ写真を作る

白バックの人物写真から人物だけを切り抜いて風景写真に貼り付けます。Pythonの画像処理ライブラリPillowのImage.compositeを使うとマスク画像を使って二枚の画像を合成できます。

画像にキラキラした文字を入れる

サンタクロースの画像にキラキラとした文字で'Merry Xmas'と書きます。Pythonの画像処理ライブラリPillowのImage.compositeを使うと2つの画像をマスク画像に応じて合成することができます。'Merry Xmas'の文字でマスク画像を作りサンタクロースとキラキラ画…

フォルダ内の画像ファイルにウォーターマーク(すかし)をつける

画像にウオーターマーク(すかし)をつける作業を自動で行います。Pythonの画像処理ライブラリPillowのImage.alpha_compositeにより画像と半透明のウオーターマークをアルファブレンドします。

jupyter notebookのUIで画像の色味をインタラクティブに調整する

ブラウザ上で動作するプログラムの対話型実行環境jupyter notebookにUIを設置します。ライブラリipywidgetsを使うとjupyter notebookにUIが設置できます。スライダーを設置して画像の色味をインタラクティブに補正できるようにします。

写真のノイズを消す

暗い場所や高いISO感度などで写真を撮影すると撮像素子の雑音に起因してノイズが乗ります。Pythonの画像処理ライブラリOpenCVのノイズ除去機能を使うことで対象物のディテールを維持したままノイズが除去できます。

写真に写った余分なものを消去する

写真に写った余分なものを消去します。Pythonの画像処理ライブラリOpenCVのInpainting機能により写真の小さな傷や余分なものを消去できます。消去した部分は周辺の画素情報より補完されます。

アジサイの写真を明るく鮮やかにする

アジサイの写真を明るく鮮やかにします。Pythonの画像処理ライブラリOpenCVで画像の色空間をBGRからHSVに変換、S(彩度)・V(明度)をルックアップテーブルでガンマ補正することで鮮やかさと明るさを上げます

図形をランダムな色で塗りつぶす

白地に黒の輪郭だけ描かれた図形をランダムな色で塗りつぶします。Pythonの画像処理ライブラリOpenCVの領域検出機能で図形を検出し、検出した座標に色を塗ります。

顔にモザイクをかける

写真に関係無い人が写っている場合に顔にモザイクをかけたい場合があります。Pythonの画像処理ライブラリOpenCVの顔検出機能を使って人の顔を自動検出しモザイクをかけます。

写真をズームイン動画にする

写真を少しずつ拡大してズームインしているように見せます。Pythonの画像処理ライブラリPillowで写真の四方をカットし決まったサイズにリサイズします。この時のカット幅を増やすことで被写体を拡大します。

少しずつ画像が切り替わる動画

ある画像から別の画像に少しずつ切り替わるアニメーションを作ります。Pythonの画像処理ライブラリPillowのブレンド機能で2つの画像を比率を変えながらアルファブレンドすることで画像が切り替わるように見せます。

図形が発光しているように見せる

物の周りにその色がにじんでいるように描くことで物が発光していることを表現できます。Pythonの画像処理ライブラリOpenCVの画像ぼかし処理で描画した図形の周り色がにじんでいるように見せます。

画像を比較明合成する

比較明合成は複数枚の画像のピクセル毎の明度を比較し明るい方のピクセルを採用して合成する手法で、星の軌跡や夜景の撮影で使われます。Pythonの画像処理ライブラリOpenCVで複数枚の写真から車のライトの光跡を比較明合成します。

Jpeg画像のファイルサイズを小さくする

デジカメやスマートフォンで撮影した画像はそのままだと数MB程度と結構サイズが大く容量を小さくしたい場合があります。Pythonの画像処理ライブラリOpenCVではJpeg画像保存時に圧縮率を指定できファイルサイズを小さくすることが可能です。

画像をセピア色に変換する(グレースケール画像を赤く補正する)

劣化した古い白黒写真の茶色っぽい色味をセピア色といいます。画像をセピア色に変換することで古い写真のように見せることができます。セピア色への変換にはいくつか手法がありますが画像をグレースケール変換したのちに、その画素値を元に青が弱く赤が強い…

ルックアップテーブルで画像の色味を調整する(B,G,Rチャンネルを個別に補正する)

ルックアップテーブルはあらかじめ用意された画素値に対応した変換表で画像の調整に用いられます。Pythonの画像処理ライブラリOpenCVのLUTによりB,G,R各チャンネル個別にルックアップテーブルでガンマ補正し画像の色味を変えます。