Python による画像処理
対象
インストール方法
- OpenCV
-
ルートで
yum install opencv-python
- PIL
-
ルートで
yum install python-imaging
サンプルスクリプト
どちらも、face.jpgという画像ファイルがあることが前提。
出力はout.jpg。
- OpenCV
画像を読んで、Sobelフィルタをかける。
import opencv.cv
import opencv.highgui
# file name
filename = "face.jpg"
outfile = "out.jpg"
# read image file
image = opencv.highgui.cvLoadImage(filename)
# read new image whose size is same as face.jpg
newimage = opencv.cv.cvCreateImage(
opencv.cv.cvSize(image.width, image.height),
image.depth, 3)
# sobel filtering
opencv.cv.cvSobel(image, newimage, 1, 2)
# save filtered image.
opencv.highgui.cvSaveImage(outfile, newimage)
- PIL
輪郭をとる処理。
ImageFilter.CONTOURを適当なものに変えれば、
それに対応する処理が可能。たとえばImageFilter.SMOOTHにすると
スムージングされる。
import Image
import ImageFilter
# read file name
filename = "face.jpg"
# read image
image = Image.open(filename)
# filtering
out = image.filter(ImageFilter.CONTOUR)
# save filtered image
out.save("out.jpg")
画像の膨張 (dilate)
いろいろimport
import Image
import scipy.ndimage
膨張させる元パターンを造る
struct = numpy.array( [
[0, 0, 1, 0, 0],
[0, 1, 1, 1, 0],
[1, 1, 1, 1, 1],
[0, 1, 1, 1, 0],
[0, 0, 1, 0, 0]])
画像を読み込んでgray scale化
im = Image.open(filename).convert('L')
numpy.array化して膨張させる。
before = numpy.asarray(im)
after = scipy.ndimage.binary_dilation(before, struct, 10)
after = numpy.array( after, numpy.uint8 ) * 255
最後に画像を保存
im2 = Image.fromarray(after, 'L')
im2.save('dilated.png')
参考文献
back to My page
back to Home page