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的主要内容,如果未能解决你的问题,请参考以下文章