在Jupyter Notebook中使用OpenCV GaussianBlur函数出现断言失败错误求助
问题解决:Jupyter中OpenCV GaussianBlur报错(-215:Assertion failed) !_src.empty()
错误核心原因
你碰到的问题本质是**cv2.imread不支持读取HTTP格式路径**,http://localhost:8888/view/Pictures/Blured.jpg是Jupyter网页端的文件预览链接,不是本地文件的实际路径,导致img变量读取为空,调用GaussianBlur时触发断言错误。另外Jupyter环境下cv2.imshow也大概率无法正常弹出显示窗口。
修正步骤
1. 替换为本地图片路径
把cv2.imread的参数改成图片的本地绝对路径,或者相对路径(相对当前Jupyter Notebook所在的文件夹):
- 绝对路径示例:
"C:/Users/xxx/Pictures/Blured.jpg" - 相对路径示例:若Notebook和图片在同一文件夹,直接写
"Blured.jpg"
2. 添加读取校验逻辑
在使用图片前先判断是否读取成功,避免后续函数直接报错。
3. 适配Jupyter的图像显示方式
用matplotlib替代cv2.imshow,因为Jupyter对OpenCV的原生窗口支持不佳。
修正后的完整代码
import cv2 import matplotlib.pyplot as plt # 替换为你的本地图片路径 img = cv2.imread("Blured.jpg") # 校验图片是否读取成功 if img is None: print("错误:无法读取图片,请检查路径是否正确") else: imgBlur = cv2.GaussianBlur(img, (7,7), 0) imgsharped = cv2.addWeighted(img, 2, imgBlur, -0.9, 0) # OpenCV读取的是BGR格式,转成RGB后适配matplotlib显示 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) imgsharped_rgb = cv2.cvtColor(imgsharped, cv2.COLOR_BGR2RGB) # 分栏显示原图和锐化后的图 plt.figure(figsize=(12,6)) plt.subplot(121) plt.imshow(img_rgb) plt.title("原图") plt.axis("off") plt.subplot(122) plt.imshow(imgsharped_rgb) plt.title("锐化后的图") plt.axis("off") plt.show()
额外注意点
- 确保图片路径中没有中文或特殊字符,避免读取失败
- 若用相对路径不确定位置,可通过
import os; print(os.getcwd())查看Jupyter当前工作目录,把图片放到该目录下
内容的提问来源于stack exchange,提问作者Omar Osama
相关产品推荐
相关产品推荐

