当我在Google Colab运行如下代码
import cv2 import numpy as np image = cv2.imread('a.jpg') cv2.imshow('original_image', image)
竟然会使会话奔溃,然后内核重启,系统日志如下:
警告信息是“cannot connect to X server”,那什么是X server呢?
X server是Linux系统上提供图形用户界面的服务程序。当客户端主机Client访问服务器Server上的图形程序时,需要Server对该Client赋能访问图形程序的权限。
这下就明白了,由于OpenCV采用highgui,而命令行下无法产生图形界面。
这个问题对于命令行下的Linux同样存在。
一个简单的方法就是避开cv2.imshow函数不用。但有时候很想把图片打出来,可以用matplotlib代替
import cv2 from matplotlib import pyplot as plt import numpy as np original_image = 'a.jpg' image = cv2.imread(original_image) show_img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(show_img) plt.show()
这样打印的图片像表格,勉强吧!
发现更好的方法!!
可以使用Pillow,Pillow也是Python里的图像处理库(PIL:Python Image Library)
from PIL import Image import cv2 import matplotlib.pyplot as plt %matplotlib inline img_path = 'a.jpg' img = Image.open(img_path) print(img.mode) #RGB img
完美以图片展示。
参考链接:
1、https://www.jianshu.com/p/74b902950c4b
2、http://www.th7.cn/Program/Python/201707/1206424.shtml
3、https://zhuanlan.zhihu.com/p/43268790