OpenCV-Python在二维图像中的深度误差

2024-10-06 11:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用OpenCV和Python计算图像中的精明边缘(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

出于某种原因,我得到了上面的错误。你知道为什么吗?


Tags: 图像srcerrorcv2opencv边缘printndarray
3条回答

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

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

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

为了避免在将数据类型更改为uint8时丢失精度,您可以先将比例调整为255格式,只需执行以下操作:

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

这里我认为图像是一个numpy数组,np代表numpy。我希望它能帮助别人!

切片1将需要铸造或创建为uint8。CV_8U只是uint8数据类型的别名。

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

相关问题 更多 >