Azure部署Jupyter Notebook Python代码时内核崩溃问题求助
Azure Jupyter Notebook中OpenCV显示图像导致内核崩溃的解决办法
问题详情
本地Jupyter Notebook能正常运行的代码,部署到Azure云端后,除最后一段OpenCV显示图像的代码外,其余部分均正常。但运行到cv2.imshow时,出现内核崩溃错误:
Kernel Restarting
The kernel appears to have died. It will restart automatically.
相关代码骨架:
!pip install opencv-python !pip install numpy !pip install tensorflow !pip install -U numpy !pip install ipykernel ipython jupyter_client jupyter_core traitlets ipython_genutils !pip install numpy --upgrade !pip install nomkl !pip update --all !apt-get update !apt-get install ffmpeg libsm6 libxext6 -y !pip install matplotlib !pip install -c intel mkl import cv2 image=cv2.imread('img_1.jpg') image.shape image[0] import matplotlib.pyplot as plt plt.imshow(image) # 从此处开始报错 while True: cv2.imshow('Image',image) if cv2.waitKey(2) == 27: # 27是Esc键的ASCII码 break cv2.destroyAllWindows()
原因
cv2.imshow需要本地图形界面(GUI)支持才能创建显示窗口,但Azure Jupyter Notebook是云端无桌面环境,没有对应的显示后端,直接调用会触发内核异常崩溃。本地运行时系统自带桌面环境,所以能正常执行。
解决方案
方案1:用Matplotlib显示图像(推荐)
直接使用已导入的Matplotlib替代OpenCV的窗口显示,注意转换图像格式(OpenCV读入的是BGR,Matplotlib默认用RGB显示):
import cv2 import matplotlib.pyplot as plt image = cv2.imread('img_1.jpg') # 转换颜色通道格式 image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(image_rgb) plt.title('Image') plt.axis('off') # 隐藏坐标轴,让显示更整洁 plt.show()
方案2:保存图像后查看
如果需要保留类似交互逻辑,可将图像保存为文件,在Azure Notebook左侧的文件浏览器中点击查看:
import cv2 image = cv2.imread('img_1.jpg') cv2.imwrite('display_image.jpg', image) # 执行后到左侧文件列表找到display_image.jpg,点击即可查看
额外优化
清理代码中重复的依赖安装命令,避免环境冲突,精简后的安装命令如下:
!apt-get update && apt-get install ffmpeg libsm6 libxext6 -y !pip install opencv-python numpy tensorflow matplotlib nomkl --upgrade
内容的提问来源于stack exchange,提问作者Burulai
相关产品推荐
相关产品推荐

