python-3.x - OpenCV 和 Matplotlib 以不同的方式显示图像
问题描述
我试图在经过一些处理后绘制图像。我使用下面的三个选项获得了三个不同的图像。获得的图像是在道路车道图像上应用两次 Sobel 滤波器后得到的。
sample_image.jpg 下面的 Python 代码显示了三种绘图方法。
img = cv2.imread('sample_image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gaussian = cv2.GaussianBlur(gray,(3,3),0)
sobely = cv2.Sobel(gaussian,cv2.CV_64F,1,0,ksize=5) # y
sobelyy = cv2.Sobel(sobely,cv2.CV_64F,1,0,ksize=5) # y
# method 1
cv2.imshow('sobelyy', sobelyy)
# method 2
cv2.imwrite('filtered_img1.JPG', sobelyy)
s_img = cv2.imread('filtered_img1.JPG')
cv2.imshow('s_img', s_img)
# method 3
plt.figure()
plt.imshow(sobelyy, cmap='gray')
plt.title('Filtered sobelyy image, B(x,y)'), plt.xticks([]), plt.yticks([])
plt.show()
我得到的图像是:
我想得到的图像是方法3中得到的图像。
为什么图像以不同的方式显示?如何像方法 3 的结果一样保存输出图像?
先感谢您!
解决方案
为什么图像以不同的方式显示?
OpenCV 和 Matplotlib 使用不同的色彩空间来显示图像——这就是为什么即使它们实际上相同,它们看起来也不同的原因。
至于您的前两种方法,它们实际上应该看起来相同,并且当我尝试您的代码时它们会这样做。
如何像方法 3 的结果一样保存输出图像?
Matplotlib 有一个内置函数可以将绘制的图像写入光盘,只需使用:
plt.savefig('your_filename.png')
推荐阅读
- javascript - Angular 6 'app-action-button' 不是已知元素
- memory - 防止极端内存使用
- nginx - NGINX proxy_pass URL 带参数到另一个路径
- ruby-on-rails - 控制器在哪里定义为某个操作呈现什么模板或视图?
- react-native - 用于 React Native 的 Expo 的 AES 加密
- sql - result_fetch(res@ptr, n)': nanodbc/nanodbc.cpp:2966: 07009: [Microsoft] [ODBC Driver 13 for SQL Server]无效的描述符索引
- c# - 使用c#捕获powershell脚本的控制台日志
- sql - 删除语句正在工作,但不删除行
- javascript - 如何在子目录中安装 npm 依赖项?
- amazon-web-services - 如何将 Cognito 身份 ID 附加到 AWS IoT 策略?