Pythonでいろいろやってみる

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

python

アスキーアートを自動生成する

画像をテキストで置き換えるいわゆるアスキーアートを自動生成します。Pythonの画像処理ライブラリPillowを使って、画像の濃い部分を画数の多い文字、画像の薄い部分を画数の少ない文字で置き換えることでアスキーアート化します。

文字が浮かび上がるGIFアニメを作成する

文字が浮かび上がるGIFアニメを作ります。Pythonの画像処理ライブラリPillowを使って黒字の画面に少しずつ黒→白へ色を変えて文字を描きます。その画像をGIFアニメーション化することで文字が浮かび上がるようなアニメーションを作成します。

字幕がスクロールするGIFアニメを作成する

スターウォーズのオープニング画面のように、画面の下からテキストが現れ上に移動するGIFアニメを作成します。折り返したテキストの描画開始位置を少しずつ変えることでスクロール効果を表現します。 関連記事 画像を描画しアニメーションGIFを作成する テキ…

ルパン三世タイトル画面風GIFアニメーションを作る

テレビアニメ・ルパン三世のタイトル画面風のGIFアニメーションを作ります。特大フォントで一文字づつ表示し、最後にタイトル全体を表示します。 関連記事 画像を描画しアニメーションGIFを作成する 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0…

画像を描画しMP4動画を作成する

OpenCVのcv2.VideoWriterメソッドを使うと複数の画像ファイルから動画を作成することができます。ここではpillowで画像を描画・保存し、OpenCVで動画化しています。 関連記事 画像を描画しアニメーションGIFを作成する 環境 windows10 home Anaconda 3/ jupy…

画像を描画しアニメーションGIFを作成する

画像処理ライブラリPillow(PIL)を使うとアニメーションGIFファイルを作成できます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 Pillow 5.2.0 やること 640x480の黒ベタ画像を描画 直径200pxの赤で塗りつぶした円を描画 「赤い…

日本語文字入り画像を作成する

Pillow(PIL)はPythonの画像処理ライブラリで図形描画、画像読み出し・保存など可能です。また日本語の表示に対応しており(OpenCVは対応していない)画像に日本語文字を入れることができます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python…

文章の恐怖度合を定量化する(感情判定)

文章の感情判定を行います。ある感情(ここでは恐怖)を表現する単語が文章中にいくつあるかをカウントし、文章の文字数で割って定量化します。 準備 判定には感情を表現する単語のリスト・辞書が必要となります。そこで長岡技術科学大学 自然言語処理研究室の…

画像をグラデーションをつけて合成する

2枚の画像をグラデーションを付けて合成します。opencvのメソッドcv2.addWeightedを使います。片方の画像のウエイトを左→右で減らし、もう片方の画像のウエイトを逆に左→右で増やすことで左右にウエイトを変えて合成します。合成する画像は同じサイズでない…

VGG16を用いた画像分類

画像のディープラーニング学習済みモデルVGG16を用いて画像の分類を行います。VGG16は140万個のラベル付き画像と1000種類のクラスからなるImageNetデータセットを用いたCNN(畳み込みニューラルネットワーク)学習済みモデルです。Pythonのディープラーニング…

形状の異なる数字画像を大量に生成する

機械学習を行うためには大量の学習データが必要になります。0-9の10個の数字画像を大量に生成します。以下のパラメータを変えた32x32pxの画像を4320個生成しpngファイルで保存します。 数字(0-9)・・・10 フォント・・・8 文字のx位置・・・3 文字のy位置・…

ヒストグラム平坦化・コントラスト制限付適応ヒストグラム平坦化によるカラー画像のコントラスト補正

明るい画像では明度の分布は明るい方に集中しており、暗い画像では明度は暗い方に集中しています。この明度の分布(ヒストグラム)を広げて明るさをまんべんなくする方法がヒストグラム平坦化で、画像のコントラスト調整ができます。 OpenCVではメソッドcv2.eq…

K-means(K平均法)で花の写真を色でクラスタリングする(全画素を特徴量に使う)

K-means(K平均法)で花の写真を色でクラスタリングする では画面全体のBGRの比率を特徴量として用いましたが、全画素のBGR値をそのまま特徴量に用いてクラスタリングをします。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV …

K-means(K平均法)で花の写真を色でクラスタリングする

K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単…

ライブラリqrcodeでQRコードを生成する

ライブラリqrcodeを使うことでQRコード(2次元バーコード)がPythonで簡単に作成できます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 qrcode 6.1 Pillow 5.2.0 準備 ライブラリqrcodeをAnaconda Promptよりインストールします。 …

TF-IDFとコサイン類似度により文書の類似度を判定する

Pythonの機械学習ライブラリscikit-learnを使って文書の類似度を求めます。文書中に含まれる単語が「その文書内でどれくらい重要か」を表す尺度であるTF-IDFにより、すべての単語を次元とした文書ベクトルを作成します。文書ベクトル同士のコサイン類似度を…

word2vecでコパアメリカ 日本vsチリ戦の敗因を分析する

word2vecでコパアメリカ 日本vsチリ戦の敗因を分析します。word2vecは文章中の単語をベクトル化する技術で、関連する単語の抽出や単語同士の類似度を調べたり単語の線形計算ができるようになります。ベクトル化処理をするためには単語の区切りを示す必要があ…

ルックアップテーブルによる画像の減色

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

特定チャンネルをガンマ補正し画像の色味を変える

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

K-Meansクラスタリングによる画像の減色

K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単…

画像をグニャグニャにする(各行をsinカーブでx方向にずらす)

画像をグニャグニャにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にsinカーブでずらすことでグニャグニャに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 画像をザーザーにする(各行をランダム…

画像をザーザーにする(各行をランダムにx方向にずらす)

画像をザーザーにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にランダムにずらすことでザーザーに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 環境 windows10 home Anaconda 3/ jupyter note…

波線を描く

波線を描きます。波線の絵を使いたくなることが結構ありますが、いざ描こうと思うと面倒です。なのでpythonで作成してみます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import numpy as np import math i…

画像を斜めに変形する

画像を斜めに変形します。画像を読み出し別のndarrayに1行ずつコピーしますがその際にx方向に1pxずつずらすことで斜めに変形した画像を生成します。 関連記事 黒画像を作成する 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV…

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

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

文字列にアルファベットがそれぞれ何個含まれているか数える

文字列にアルファベットの小文字(a-z)と大文字(A-Z)がそれぞれ何個ずつ出現するか数えます。for文で文字コードを回して.count()メソッドにより出現回数をカウントします。 使ったメソッド .count() : 文字列の出現回数を求める 環境 windows10 home Anaconda…

回転を考慮した外接矩形を描画する

Pythonの画像処理ライブラリOpenCVの領域検出機能を使って回転を考慮した外接矩形(長方形)を算出します。findContoursにより領域を検出しminAreaRectにより検出した領域に対する外接矩形を求めます。

ナップサック問題を解く(貪欲法)

ナップサック問題とは、ナップサックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場…

ナップサック問題を解く(ライブラリknapsackを使用)

ナップサック問題とは、ナップサックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場…

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

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