【问题标题】:Skimage Python33 CannySkimage 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

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

【问题讨论】:

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


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-17
        • 2013-06-30
        • 1970-01-01
        • 2013-08-14
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        相关资源
        最近更新 更多