将Canny边缘检测转换为np.array

时间:2019-01-22 11:36:45

标签: python arrays edge-detection

我编写了一个函数,希望使用Canny算法检测图像的边缘。然后,我想提取此图像的2d数组,然后将其展平为1d数组。

def canny_detection(image):

    # Convert to grayscale and convert the image to float
    RGB = img_as_float(color.rgb2gray(image))

    # Apply Canny edge detection algorithm
    edge_canny = feature.canny(RGB, 3).astype(int)

    #Get output array
    canny_arr = np.array(edge_canny)

    # Flatten output array
    canny_flat = canny_arr.flatten()

    return canny_flat

但是,当我使用示例图像调用该函数时,输出只是一个很大的0数组。我确定那是不对的。我已经在图像上测试了canny算法,得到的图像是正确的。但是问题是当我想获取图像的矢量时。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我怀疑问题可能在那一行:

edge_canny = feature.canny(RGB, 3).astype(int)

请替换为

edge_canny = feature.canny(RGB, 3)
print(edge_canny)
edge_canny = edge_canny.astype(int)
print(edge_canny)

并检查其打印内容,如果第一个是一些非零浮点值<1.0,第二个是0 s,则可能意味着feature.canny产生从0.0到{ {1}},然后您将其转换为1.0。 编辑:修复了我的代码。