Skimage Python33 Canny

时间:2015-06-03 04:08:22

标签: python-3.x numpy scikit-learn python-3.3

长话短说,我只想简单地试图获得image.jpg的精美图像。

文档很乱,所以我很困惑。如果有人可以提供帮助,那将非常感激。

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

任何人都可以解释如何从图像文件创建2D数组吗? 谢谢!

2 个答案:

答案 0 :(得分:7)

我怀疑image1.jpg是彩色图片,所以im是3D,带有形状(num_rows,num_cols,num_color_channels)。一种选择是告诉imread通过为其提供参数flatten=True将图像展平为2D数组:

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

或者您可以将canny应用于其中一个颜色通道,例如

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

答案 1 :(得分:0)

精确边缘检测需要灰度图像输入才能工作。 您可以使用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)