error: OpenCV(4.0.1) c:\ci\opencv-suite_1573470242804\work\modules\highgui\src\precomp.hpp:131: error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'
时间: 2023-07-02 18:15:28 浏览: 67
这个错误是由于在 OpenCV 中使用了不支持的图像深度引起的。在这个特定的情况下,您的输入图像的深度为 CV_16F 或 CV_32S,而这些深度不支持在 highgui 模块中显示。要解决这个问题,您可以将图像深度转换为支持的深度,例如 CV_8U 或 CV_32F,然后再将其传递给 highgui 模块进行显示。您可以使用 OpenCV 中的 convertTo 函数来转换图像深度,例如:
```
cv::Mat inputImage = ...; // Your input image with unsupported depth
cv::Mat displayImage;
inputImage.convertTo(displayImage, CV_8U); // Convert depth to CV_8U
cv::imshow("Display Window", displayImage); // Show the converted image
```
这个代码片段将把您的输入图像从 CV_16F 或 CV_32S 转换为 CV_8U,并将其传递给 imshow 函数进行显示。
相关问题
cv2.error: OpenCV(4.0.1) C:\ci\opencv-suite_1573470242804\work\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
这个错误通常表示你正在尝试展示一个大小为0的图像。这可能是由于以下原因之一导致的:
1. 加载的图像文件不存在或损坏。请检查文件路径是否正确,或者尝试使用其他图像文件进行测试。
2. 代码中的图像处理步骤未正确执行。请检查代码并确保图像已正确加载和处理。
3. 可能存在权限问题。请确保你有访问所需文件的权限,或者尝试将文件移动到其他位置。
如果你确定图像文件正确且代码没有问题,可以尝试使用其他图片进行测试,或者使用简单的代码段来加载和展示图像:
``` python
import cv2
# 加载图像
img = cv2.imread('image.png')
# 展示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
如果这段代码仍然出现相同的错误,那么可能是OpenCV库本身的问题。尝试重新安装OpenCV库,或者使用其他版本的OpenCV库。
cv2.error: OpenCV(4.0.1) C:\ci\opencv-suite_1573470242804\work\modules\imgproc\src\drawing.cpp:1811: error: (-215:Assertion failed) 0 < thickness && thickness <= MAX_THICKNESS in function 'cv::line'
这个错误提示是因为thickness参数的值不能小于等于0。cv2.line()函数中的thickness参数表示直线的宽度,如果为-1则表示将直线以实心的形式绘制,但是并不支持thickness小于等于0的情况,因此会报错。
您可以将thickness参数的值改为大于0的整数,例如2,表示将直线以宽度为2的实线形式绘制在原图上。修改后的代码如下:
```
import cv2
import numpy as np
# 读入原图
img = cv2.imread('image.jpg')
# 对img进行处理,得到筛选出的直线lines
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Scharr = cv2.Scharr(gray, cv2.CV_8U, 1, 0)
lines = cv2.HoughLinesP(Scharr, 1, np.pi / 180, 100, minLineLength=300, maxLineGap=20)
# 在img上将所有直线以黑色实线的形式绘制
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 0), thickness=2)
# 显示处理后的图像
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行以上代码,即可得到将筛选出的直线以实线形式绘制后的图像。