我编写了一个函数,希望使用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算法,得到的图像是正确的。但是问题是当我想获取图像的矢量时。
任何人都可以帮忙吗?
答案 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
。
编辑:修复了我的代码。