python 3.x - 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

谁能解释如何创建一个2D数组从图像文件?谢谢!

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

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

相关内容

  • 没有找到相关文章

最新更新