完全独習統計学入門がすごくわかりやすかった話
東京駅の丸善をウロウロしてたら、
python3 opencv3入門-モフォロジーやで
モフォロジーとかモルフォロジーとか言われるやつですね。
膨張・収縮・オープニング・クロージング 画像処理ソリューション
ざっとこの辺を見て勉強してください。
さて、コードですが、サイズを決めて、関数を呼ぶだけです
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('./images/lenna.jpg', 0)
ret, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
#カーネル要するにどれだけ強くモフォロジーをかけるかということ
kernel = np.ones((5, 5), np.uint8)
#モフォロジー処理
elosion = cv2.erode(binary, kernel, iterations = 1)#収縮
dilation = cv2.dilate(binary, kernel, iterations = 1)#膨張
closing = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)#クロージング
opening = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)#オープニング
plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(binary, 'gray'), plt.title('BIN')
plt.subplot(233), plt.imshow(elosion, 'gray'), plt.title('ELODED')
plt.subplot(234), plt.imshow(dilation, 'gray'), plt.title('DILATED')
plt.subplot(235), plt.imshow(closing, 'gray'), plt.title('CLOSED')
plt.subplot(236), plt.imshow(opening, 'gray'), plt.title('OPENED')
plt.show()
もう少し、解りやすい画像にすればよかったです。
python3 opencv3入門-フィルタリング
画像処理といえばフィルタリング、ということで簡単な平滑化とエッジ検出をやってみます。
とはいえ、コードはこれだけです。簡単です
mport cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('./images/lenna.jpg', 0)
gaussian = cv2.GaussianBlur(img, (5, 5), 0) #ガウス平滑化
edge = cv2.Canny(img, 100, 200)#cannyフィルタ
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('ORIGINAL')
plt.xticks(), plt.yticks()
plt.subplot(132), plt.imshow(gaussian, 'gray'), plt.title('GAUSSIAN')
plt.xticks(), plt.yticks()
plt.subplot(133), plt.imshow(edge, 'gray'), plt.title('CANNfifY')
plt.xticks(), plt.yticks()
plt.show()
python3 opencv3入門-2値化してみよう
画像処理といえば2値化から、というわけでやってみます
とはいえ、コードはこれだけです。thresholdの値を変えると処理結果が変わると思います。
%matplotlib inline
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('./images/lenna.jpg', 0) #グレーで読み出し
#retはとりあえず無視してくれていいです
threshold = 127
ret, binImage = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)#二値化
plt.subplot(121), plt.imshow(img, 'gray')
plt.subplot(122), plt.imshow(binImage, 'gray')
plt.show()
python3 opencv3入門-理論編
理論編何て言っときながら、本を紹介するだけです。
cg-arts協会ってトコが、画像処理エンジニア検定っていう資格試験やっているのですが、その教科書2冊が割と、ザーっと画像処理の基礎を勉強するのに向いています。
青いほうは基礎で、緑が応用(高いのでKindle版をお勧め)。大学の学部時代にも、持ってる友人が割と多かったような...
ちなみに、資格は割と簡単なのでチャレンジしてみるのも良いかもしれません。
ディジタル情報処理
ディジタル画像処理
問題集
python3 opencv3入門-環境構築編
python3 でopencvを触るようになってから割と時間が経ったため、Tipsをまとめてみようと思う。
まず、環境構築
基本的にはanaconda を使うのが一番楽だと思います。
macでもwindowsでもとりあえず公式サイトからダウンロードする。
Download Anaconda now! | Continuum
パスは勝手に追加されるので、ターミナルが起動してたら再起動だけすること。
conda create -n py35con python=3.5 anaconda
を入力して環境構築。そのあと
activate py35con
macならターミナルで
conda create -n py34 python=3.4 anaconda
を入力して環境構築。そのあと
source activate py34con
と打てば環境を立ち上げる事ができる。
ターミナル(もしくはコマンドプロンプト)に(py34con)とか(py35con)とか表示されたら、ipython notebookと叩いてみましょう。
そうすると、ブラウザにjupyterというページが立ち上がるので。
右上のnewを押してpython3をクリックするとpythonのスクリプト環境が立ち上がります。
print('hello')と入力してshift+enterを押すと実行されると思います。
次はopencv3の導入
とりあえず、さっきのターミナルでctrl+cで一旦ipython notebookを落とします
macなら
conda install -c https://conda.binstar.org/menpo opencv3
と入力するだけ。
windows なら
http://www.lfd.uci.edu/~gohlke/pythonlibs/
ここから、opencv_python-3.1.0+contrib-cp35...をダウンロード
whlがあるフォルダで
pip install "opencv_python-3.1.0+contrib(省略).whl"
と叩けば、簡単にインストール可能
そしたら
%matplotlib inline
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('./images/lenna.png' ,0) #lennaをロード
plt.imshow(img, 'gray'), plt.title('LENNA')
plt.show()
と打ってみましょう。(画像ファイルは適当に準備して今いるディレクトリに置いてください)
レナさんが表示されれば成功です!
macでopencvのsiftを使う
windows版ではopencv3, python3でSIFTが使えたけど。
macでは未だに環境をpython3では環境構築ができていません。
とりあえず、
conda create -n py27cv24 python=2.7 anaconda
して、そこに
conda install -c https://conda.anaconda.org/menpo opencv
するとSIFTは使える。しかし何としてもpython3でopencv3を使えるようにしたい。
何かいい情報があれば教えてください。
ちなみに、この環境なら、チュートリのコードがそのまま動きます。
Introduction to SIFT (Scale-Invariant Feature Transform) — OpenCV 3.0.0-dev documentation