cv2.imshow("image", img) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:971: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
时间: 2023-06-11 08:04:13 浏览: 603
这个错误是因为传递给cv2.imshow函数的图像大小为零。请确保图像大小不为零并且已正确加载。您可以通过检查图像大小是否大于零来验证这一点,例如:
if img.shape[0] > 0 and img.shape[1] > 0:
cv2.imshow("image", img)
else:
print("Image size is 0.")
相关问题
Traceback (most recent call last): File "D:\pythonProject\guidao.py", line 20, in <module> imggray = cv2.cvtColor(selected_files, cv2.COLOR_BGR2GRAY) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'cvtColor' > Overload resolution failed: > - src is not a numpy array, neither a scalar > - Expected Ptr<cv::UMat> for argument 'src'
根据错误信息看,是因为 `cvtColor` 函数的第一个参数需要是一个 numpy 数组,而 `selected_files` 是一个文件名列表,不是 numpy 数组。因此,你需要在读取每个文件时使用 OpenCV 的 `imread` 函数将其转换为 numpy 数组,然后再将其转换为灰度图像。
以下是修改后的代码:
```python
import os
import cv2
import random
# 文件夹路径
folder_path = "path/to/folder"
# 读取文件夹中所有文件名
files = os.listdir(folder_path)
# 随机选择 20 个文件
selected_files = random.sample(files, 20)
# 读取每个文件并转换为灰度图像
images = []
for file_name in selected_files:
file_path = os.path.join(folder_path, file_name)
img = cv2.imread(file_path)
imggray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
images.append(imggray)
# 显示灰度图像
for img in images:
cv2.imshow("Gray Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们使用 `imread` 函数读取每个文件,并使用 `cvtColor` 函数将其转换为灰度图像。然后将每个灰度图像添加到 `images` 列表中。最后,我们循环显示每个灰度图像。
请注意,你需要将 `folder_path` 替换为你的文件夹路径。
cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:971: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
这个错误通常是由于图像读取失败或图片大小为0导致的。你可以检查以下几个方面来解决这个错误:
1. 检查图片路径是否正确,确保程序能够找到图片。
2. 检查图片是否被成功读取。你可以使用以下代码来确认图片是否被成功读取:
```
import cv2
img = cv2.imread("image.jpg")
if img is None:
print("Failed to load image.")
else:
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
如果输出了“Failed to load image.”,那么说明图片读取失败。
3. 检查图片的大小是否为0,如果是0,那么就会出现这个错误。你可以使用以下代码来确认图片的大小:
```
import cv2
img = cv2.imread("image.jpg")
if img.size == 0:
print("Image size is 0.")
else:
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
如果输出了“Image size is 0.”,那么说明图片大小为0。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)