2015-06-03 56 views
4

長話短說,我只是簡單地試圖得到一個canny邊圖像image.jpgSkimage Python33 Canny

該文檔非常斑點,所以我變得非常困惑。如果任何人都可以提供幫助,將不勝感激。

from scipy import misc 
import numpy as np 
from skimage import data 
from skimage import feature 
from skimage import io 


im=misc.imread('image1.jpg') 
edges1 = feature.canny(im) 
... 

而且我得到這個錯誤

ValueError: The parameter `image` must be a 2-dimensional array 

誰能解釋如何從一個圖像文件的二維數組? 謝謝!

回答

7

我懷疑image1.jpg是一個彩色圖像,所以im是3D形狀(num_rows,num_cols,num_color_channels)。一種選擇是要告訴imread給它的參數flatten=True的圖像拼合到一個二維數組:

im = misc.imread('image1.jpg', flatten=True) 

或者你可以申請canny只是顏色通道之一,例如

im = misc.imread('image1.jpg') 
red_edges = feature.canny(im[:, :, 0]) 
0

Canny邊緣檢測需要灰階圖像輸入才能工作。 您可以使用scikit-image中的rgb2gray模塊將3D(彩色)圖像轉換爲2D(灰度)。

from skimage import io, features 
from skimage.color import rgb2gray 

image = rgb2gray(io.imread("image.png")) 
edges = feature.canny(image)