matlplotlib figure imshow

本文探讨了在PyCharm环境中使用matplotlib和OpenCV进行图像处理和显示的方法。重点对比了plt.imshow()与cv2.imshow()的不同之处,并解决了plt.imshow()有时无法正确显示图像的问题。文中还详细解释了色彩空间的差异及其对图像颜色的影响。

matplotlib

在pycharm中处理图像和显示时,使用plt.imshow()有时候能显示图像,有时候又不能,发现少了一句plt.show()——Show result on screen,还是得把文档资料看完整啦~~

import matplotlib.pyplot as plt
import matplotlib.image as mgimg
import os   #for open file
import cv2

imgpath = "./imgtest"
imglist = os.listdir(imgpath)
for i in xrange(len(imglist)):
    """choice one----cv2"""
    img = cv2.imread(imgpath + '/' + imglist[i])
    cv2.imshow('img', img)
    cv2.waitKey()
    """choice two----mgimg"""
    img = mpimg.imread(imgpath + '/' + imglist[i])
    plt.imshow(img)
    plt.show()

两者区别好像不大(?),官网上说Natively, matplotlib only supports PNG images. 但是测试的时候用jpg图像仍然可以正常运行显示。
http://matplotlib.org/users/image_tutorial.html
使用时有时候混淆了两种方法,如果用cv2.imread()图像,plt.imshow()显示图像,会发现原图的颜色有变化。

原图:

plt.imshow()显示(可显示坐标及对应像素值,这点比cv2方便):
plt.imshow

颜色变化:
colorwrong

解释:
cv2中的色彩排列是(b,g,r),而matplotlib库中的排列方式是(r,g,b)!
reference:http://www.cnblogs.com/pakfahome/p/3917143.html

matplotlib用法这里有总结啦
http://liam0205.me/2014/09/11/matplotlib-tutorial-zh-cn/

### 代码作用 在Matlab中,`figure; imshow(img);` 这两行代码的作用是创建一个新的图形窗口,并在该窗口中显示图像 `img`。`figure` 函数用于创建一个新的图形窗口,而 `imshow` 函数用于显示图像。 ### 用法说明 以下是一个简单的示例,展示了如何使用 `figure; imshow(img);` 代码: ```matlab % 读取图像 img = imread('testPicture.jpg'); % 创建新的图形窗口并显示图像 figure; imshow(img); title('显示图像'); ``` 在这个示例中,首先使用 `imread` 函数读取了一张名为 `testPicture.jpg` 的图像,然后使用 `figure` 函数创建了一个新的图形窗口,最后使用 `imshow` 函数在该窗口中显示了图像,并使用 `title` 函数为图像添加了标题。 ### 可能遇到的问题及解决办法 - **图像信息缺失**:在对灰度图、二值图测试显示过程中,发现Matlab的 `imshow` 函数会出现信息缺失情况,这是由于 `imshow` 函数存在像素缩放导致。可通过缩放原图,或者放大结果图像进行完整信息显示。示例代码如下: ```matlab img = imread('demoshape.png'); if(numel(size(img)) > 2) img = rgb2gray(img); end % img = imresize(img,[300,400]); % 缩小图像 px = img(2:end,:) - img(1:end-1,:); % 数据类型均为uint8, 负数强制为0. python中负数强制为其补数 qy = img(:,2:end) - img(:,1:end-1); figure subplot(131) imshow(img) title('img') subplot(132) imshow(px) title('px') subplot(133) imshow(qy) title('qy') ``` - **图像显示大小问题**:如果图像太大或太小,可能会导致显示效果不佳。可以使用 `imshow` 函数的 `'InitialMagnification'` 参数来调整图像显示的大小以适应窗口。示例代码如下: ```matlab % 读取图像 img = imread('testPicture.jpg'); % 创建新的图形窗口并显示图像,调整图像显示的大小以适应窗口 figure; imshow(img, 'InitialMagnification', 'fit'); title('适应窗口大小图像'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值