使用OpenCV Python在2D图像中出现深度错误

时间:2013-09-30 21:11:35

标签: python opencv

我正在尝试使用OpenCV和Python计算图像中的Canny Edges(ndarray)。

slice1 = slices[15,:,:]
slice1 = slice1[40:80,60:100]
print slice1.shape
print slice1.dtype
slicecanny = cv2.Canny(slice1, 1, 100)

输出:

(40, 40)
float64
...
error: /Users/jmerkow/code/opencv-2.4.6.1/modules/imgproc/src/canny.cpp:49: 
error: (-215) src.depth() == CV_8U in function Canny

出于某种原因,我得到了上述错误。有什么想法吗?

3 个答案:

答案 0 :(得分:26)

Slice1需要被铸造或创建为uint8。 CV_8U只是数据类型uint8的别名。

import numpy as np
slice1Copy = np.uint8(slice1)
slicecanny = cv2.Canny(slice1Copy,1,100)

答案 1 :(得分:0)

您可以通过将slice1保存到文件然后将其读取来解决此错误

from scipy import ndimage, misc
misc.imsave('fileName.jpg', slice1)
image = ndimage.imread('fileName.jpg',0)
slicecanny = cv2.Canny(image,1,100)

这不是最优雅的解决方案,但它解决了我的问题

答案 2 :(得分:0)

为了避免在将数据类型更改为uint8时失去精度,您可以先将标度调整为255格式:

(image*255).astype(np.uint8)

在这里,我正在考虑该图像是一个numpy数组,而np代表numpy。我希望它可以帮助某人!