Pythonでいろいろやってみる

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

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

ルックアップテーブルによる画像コントラストの補正

画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。ガンマ補正とS字カ…

N-gramで文章の類似度を調べる

N-gramは文章の類似度を調べる方法の一つです。文章を隣り合う連続したN個の文字の集合に分解し、別の文章で同様に求めた文字の集合と一致するかを調べることで文書の類似度を求めます。Pythonのfor文で文書から2文字ずつ区切った文字のリストを作り、リスト…

googleimagesdownloadで画像をダウンロードする

googleimagesdownloadはグーグル画像検索から画像をダウンロードするスクリプトです。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 google-images-download 2.7.0 準備 pipコマンドでgoogle-images-downloadをインストールします…

Linear SVCによる言語判定 - 頻出単語を特徴量に使う

scikit-learnは機械学習用ライブラリで以下のアルゴリズムが使用できます。 classification(識別:教師あり学習) clustering(分類:教師なし学習) regression(回帰:教師あり学習) dimensionality reduction(次元削減,主成分分析:教師なし学習) cla…

word2vecにより単語をベクトル化し類似語検索をする

word2vecは文章中の単語をベクトル化する技術で、関連する単語の抽出や単語同士の類似度を調べたり単語の線形計算ができるようになります。ベクトル化処理をするためには単語の区切りを示す必要があるため、先に文章を分かち書きします。手順は以下の通りで…

国旗判定器で国旗を判定してみる

国旗判定器を作る、で判定ファイル作成に用いた画像で判定がうまくいくことを確認しましたが、他の画像でうまく判定できるか試します。判定用リストファイル、判定コードはそのままです。 次の3つの画像で試します。 (1)いらすとやから入手したフランス国旗…

国旗判定器を作る

国旗の判別器を作ります。あらかじめいくつかの国旗画像についてBGR各チャンネルの輝度の比率を求めたデータ(判定用リスト)を作成しておいて、それと比較することでどこの国旗かを判別します。 判定用リストのBGR比率(添え字c)と判定したい画像のBGR比率(添…

鳥取砂丘に地上絵を描く

鳥取砂丘の空撮画像に猫の地上絵を書きます。猫のイラストからエッジ検出し、エッジをぼかして地上絵の画像を作成、鳥取砂丘の画像と合成します。 使った関数・メソッド cv2.imread() : 画像ファイルの読み出し cv2.Canny() : Canny法によるエッジ検出 cv2.c…

円周率一万桁に0~9がそれぞれ何個含まれるか調べる

円周率一万桁に0~9がそれぞれ何個含まれるか調べます。 こちらのサイト(円周率.jp >> 円周率の値 1万桁まで)から円周率1万桁をスクレイピングで取得し、.count()メソッドで各数字の出現回数を求めます。 使った関数 requests.get() : Responseオブジェクト…

航空写真を加工し地形に穴が開いているように見せる

画像に穴が開いているような加工をします。単純に黒い円を重ねるだけだと自然に見えないので 白地に灰色塗りつぶした円を作成し255で規格化し画像に積算する 円の大きさを少し小さくして同様に積算する これを繰り返す という手順により中心部に行くほど黒く…

画像の一部分を拡大する

画像の一部分を拡大します。画像を縦に3つに分割し、真ん中を縦に1.5倍に拡大し、3つの画像を一つに連結することで画像の一部を拡大します。 使った関数・メソッド cv2.imread() : 画像ファイルの読み出し cv2.resize() : 画像サイズの変更 cv2.imwrite() : …

画像を点描画に変換する

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

リスト内包表記で書いてみる

pythonでリストを生成する際に良く用いられるのがリスト内包表記です。for文からなる複数行のコードを一行で完結に記述できます。 0~9のリストを生成します。 numbers = [] # リストnumbersの生成 for x in range(10): # xを0から9まで変える numbers.appen…

画像の彩度、明度を変える

Pythonの画像処理ライブラリOpenCVで読み込んだ画像をBGR色空間からHSV色空間に変換することで彩度(Saturation)、明度(Value)の調整が可能になります。この方法で画像の鮮やかさ、明るさを調整します。

フォルダ内の画像の幅をそろえる

フォルダ内にある全ての画像ファイルの幅を同じにします。 使った関数・メソッド os.listdir() : ディレクトリ内のファイルをリストに cv2.imread() : 画像ファイルの読み出し img.shape : 画像の高さ、幅、チャンネル数の取得 cv2.resize() : 画像サイズの…

画像の上下のみぼかす

写真の上下をぼかし、中央はそのまままにします。画像の上中下3つに分け、上下の画像をぼかし、最後に上中下を再度連結します。 使った関数・メソッド cv2.imread() : 画像ファイルの読み出し cv2.blur() : 画像の平均化 cv2.vconcat() : 画像を縦に連結 cv2…

画像をチャンネル別(青、緑、赤)に表示する

カラー画像を青、緑、赤各チャンネルの輝度に分けて表示します。 元画像と各チャンネルの画像を連結して一枚の画像にして保存します。 関連記事 航空写真の画素B(青)G(緑)R(赤)平均値を求め棒グラフにする 画像のヒストグラムを比較する 使った関数・メソッ…

コラージュ写真を作る

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

画像に集中線を引く

集中線はマンガで用いられる技法で、画面のある点から外側に放射状に線を引き、動きなどを表現するものです。 画像の内側と外側に円を仮定して、内側の円と外側の円の間で三角形を描画することで、画像に集中線を作成しています。 また、集中線の太さ(三角形…

Janomeで形態素解析して形態素を登場回数順に並べる

日本語の形態素解析ライブラリJanomeにより形態素解析し、形態素を登場回数順に表示します。 関連記事 - 形態素解析ライブラリJanomeで分かち書きをする 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 Janome 0.3.8 コード 用いた文…

形態素解析ライブラリJanomeで分かち書きをする

Janomeは形態素解析ライブラリで、日本語の形態素解析が可能です。形態素解析とは文章を最小単位に分け品詞や活用形の分類をすることです。例えば以下のようになります。 今日はいい天気です →今日(名詞) / は(助詞) / いい(形容詞) / 天気(名詞) / です(助…

文字列を置換し会話を関西風に変える

小説の一部が保存されているテキストファイルを読み出し、特定の文字列を置換することで関西風(?)に変換します。また正規表現を用いた置換も行います。 やること テキストファイルを読み出し、文字列として変数に代入 特定の文字列を別の文字列に置換する 使…

Yahoo!知恵袋の閲覧数ランキングベスト20の質問を取得して'令和'が何個含まれるか調べる

今日、新しい元号'令和'が発表されました。ネットでもこの話題で持ちきりです。ここではYahoo!知恵袋の閲覧数ランキングベスト20のページをスクレイピングして、そこに載っている20個の質問文の中に、'令和'がいくつ含まれているかを数えます。 使った関数 r…

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