Skimage Python33 Canny

5
长话短说,我只是想得到一张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

有人能够解释如何从图像文件创建一个二维数组吗?谢谢!

2个回答

9

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

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接