在这段代码中,我试图对图像进行积分,每次运行此代码时,窗口都会闪烁并消失,然后在终端中出现此错误
import cv2
import numpy as np
image = cv2.imread("nancy.jpg")
rows,cols,dims=image.shape
sum = np.zeros((rows,cols),np.uint8)
imageIntegral = cv2.integral(image, sum,-1)
cv2.imshow("imageIntegral",imageIntegral)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)
错误:
cv2.imshow("imageIntegral",imageIntegral)cv2.error: OpenCV(4.1.0) C:/projects/opencv-python/opencv/modules/highgui/src/precomp.hpp:131:
错误: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'
关于 cv2.integral 的帮助:
>>> import cv2
>>> print(cv2.__version__)
4.0.1-dev
>>> help(cv2.integral)
Help on built-in function integral:
integral(...)
integral(src[, sum[, sdepth]]) -> sum
. @overload
Run Code Online (Sandbox Code Playgroud)
一个简单的演示:
import numpy as np
import cv2
img = np.uint8(np.random.random((2,2,3))*255)
dst = cv2.integral(img)
>>> print(img.shape, img.dtype)
(2, 2, 3) uint8
>>> print(dst.shape, dst.dtype)
(3, 3, 3) int32
Run Code Online (Sandbox Code Playgroud)
并且您不应该直接在 dst 图像上使用 imshow,因为它不是 np.uint8。将其标准化为 np.uint8 (0, 255) 或 np.float32(0, 1.0)。您可以在此链接中找到原因:如何正确使用“cv2.imshow”来处理由“cv2.distanceTransform”返回的浮动图像?
| 归档时间: |
|
| 查看次数: |
15208 次 |
| 最近记录: |