Skimage Python33 Canny

Posted

技术标签:

【中文标题】Skimage Python33 Canny【英文标题】: 【发布时间】:2015-08-17 02:33:50 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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)

【讨论】:

以上是关于Skimage Python33 Canny的主要内容,如果未能解决你的问题,请参考以下文章

python skimage模块处理图片

python库skimage 应用canny边缘探测算法

从 skimage 导入 io 错误追溯

『Python』skimage图像处理_旋转图像

Linux 系统下安装 python-skimage

python Superpixel_skimage.py