opencv チュートリアルチャレンジ6 画像の勾配
画像の勾配 — OpenCV-Python Tutorials 1 documentation
Laplacian, sobelx, sobely
やってみよう
#!/usr/bin/env python # -*- coding: utf-8 -* import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('170519-144402.jpg', 0) img = cv2.imread('sudoku-original.jpg', 0) #img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) laplacian = cv2.Laplacian(img,cv2.CV_64F) sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5) sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5) plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray') plt.title('Original'), plt.xticks([]), plt.yticks([]) plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray') plt.title('Laplacian'), plt.xticks([]), plt.yticks([]) cv2.imwrite('Laplacian.png', img) plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray') plt.title('Sobel X'), plt.xticks([]), plt.yticks([]) cv2.imwrite('sobelx.png', img) plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray') plt.title('Sobel Y'), plt.xticks([]), plt.yticks([]) cv2.imwrite('sobely.png', img) plt.show() cv2.waitKey(0) cv2.destroyAllWindows()
あれ?
こうなった・・・。
公式のサンプルは、
こうだ。
随分違うぞ?
調べた所、勝手に正規化しているせいらしい。
pyplot — Matplotlib 2.0.2 documentation
正規化しないように指定します。
#!/usr/bin/env python # -*- coding: utf-8 -* import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('170519-144402.jpg', 0) img = cv2.imread('sudoku-original.jpg', 0) plt.subplot(2,2,1),plt.imshow(img, cmap='gray', vmin=0, vmax=255) plt.title('Original'), plt.xticks([]), plt.yticks([]) laplacian = cv2.Laplacian(img,cv2.CV_64F) plt.subplot(2,2,2),plt.imshow(laplacian, cmap='gray', vmin=0, vmax=255) plt.title('Laplacian'), plt.xticks([]), plt.yticks([]) cv2.imwrite('Laplacian.png', img) sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5) plt.subplot(2,2,3),plt.imshow(sobelx, cmap='gray', vmin=0, vmax=255) plt.title('Sobel X'), plt.xticks([]), plt.yticks([]) cv2.imwrite('sobelx.png', img) sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5) plt.subplot(2,2,4),plt.imshow(sobely, cmap='gray', vmin=0, vmax=255) plt.title('Sobel Y'), plt.xticks([]), plt.yticks([]) cv2.imwrite('sobely.png', img) plt.show() cv2.waitKey(0) cv2.destroyAllWindows()
まだ、Laplacian の結果がおかしい。
なにかあるのだろうか・・・。