簡體   English   中英

使用OpenCV Python在2D圖像中出現深度錯誤

[英]Depth error in 2D image with OpenCV Python

我正在嘗試使用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

出於某種原因,我得到了上述錯誤。 有什么想法嗎?

Slice1需要被鑄造或創建為uint8。 CV_8U只是數據類型uint8的別名。

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

您可以通過將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。 我希望它可以幫助別人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM