Skimage Python33 精明

Skimage Python33 Canny

长话短说,我只是想获得 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

谁能解释一下如何从图像文件创建二维数组? 谢谢!

我怀疑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])

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)