在对灰度图、二值图测试显示过程中,发现matlab的imshow函数和plt.imshow函数显示的图像会出现信息缺失情况,让人误以为图像矩阵像素值发生变化。经过测试,是由于imshow函数存在像素缩放导致。可通过缩放原图,或者放大结果图像进行完整信息显示。

  • matlab: imshow
function Testimshow()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);figuresubplot(131)imshow(img)title('img')subplot(132)imshow(px)title('px')subplot(133)imshow(qy)title('qy')end


因为图片过大,导致有些信息无法显示,通过缩小原图,或者直接对结果进行放大可以看到另一条边缘:

  • plt.imshow 同样存在该问题
def TestCV_plt():img = cv2.imread('./imgs/others/img/demoshape.png',0)H,W = img.shape# img = cv2.imresize(img,[400,300])  #  [列数,行数]imglight = img[1:H, :]imgdark = img[0:H - 1, :]px = CalcImgDiff(imglight,imgdark,0)imglight = img[:,1:W]imgdark = img[:,0:W-1]qy = CalcImgDiff(imglight, imgdark,0)cv2.imshow('px',px)cv2.imshow('qy',qy)cv2.waitKey(0)plt.figure()# plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.05, hspace=0.05)# plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.1, hspace=0.05)plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.05, hspace=0.1)plt.subplot(221)plt.imshow(px,'gray')plt.subplot(222)plt.imshow(qy, 'gray')plt.subplot(223)plt.imshow(px, 'gray',vmin=0,vmax=255)plt.subplot(224)plt.imshow(qy, 'gray',vmin=0,vmax=255)plt.show()



plt.imshow会自动对灰度图进行图像增强处理, 可以通过vmin和vmax调节线性灰度变换效果.
类似matlab中操作,通过缩小原图,或者改变子图间距来调整显示结果。

  • cv2.imshow 不存在该问题
    cv2.imshow对图像进行原图显示,不会进行像素缩放,所以显示完整可靠。

matlab的imshow python中cv2.imshow及plt.imshow相关测试相关推荐

  1. python opencv 内存泄露_解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...

  2. python plt.show_解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matp ...

  3. opencv python 中cv2.putText()函数的用法

    opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...

  4. python中cv2、Image和plt的图片打开、显示和保存

    使用cv2.Image.plt打开.显示和保存图片 文章目录 使用cv2.Image.plt打开.显示和保存图片 0.读取图片 1.使用cv2显示cv2打开的图片 2.使用cv2显示Image打开的图 ...

  5. 基于python中cv2库的图像分割

    一.概念 1.简述Radon变换检测直线的原理. Radon变换就是将数字图像矩阵在某一角度射线方向上做投影变换,按照投影方向累加像素. 2.简述基于区域生长的图像分割的原理. 根据同一物体区域内像素 ...

  6. python中cv2.putText和cv2.getTextSize

    cv2.putText简单参数介绍 下面是官方文档: def putText(img, text, org, fontFace, fontScale, color, thickness=None, l ...

  7. 空间平面方程matlab求解,在Python中求解平面方程(如在Matlab中)

    我有一个数据集,我试图从中得到一架飞机的等式. 即:a x + b y + c = z 在我的情况下,dT = x,dTa = y,Constant = c,dV = z. 我可以在Matlab中很容 ...

  8. python中cv2库_Python cv2库(人脸检测)

    根据访问图片识别 # coding:utf-8 import sys import math import cv2 # 待检测的图片路径 imagepath = r'l.png' face_casca ...

  9. python中cv2.putText参数详解

    cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3) 各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细 其中 ...

最新文章

  1. 想成为牛逼程序员? 先数数编程语言之父们的头发
  2. 小布老师视频教程----oracle 9i 性能调优系列培训(全)
  3. 聚合类新闻client初体验
  4. Cesium源码编译过程
  5. 对于数字特征的若干理解
  6. SQL2000 统计每周,每月,每季,每年的数据
  7. C#实现乞丐版IOC容器
  8. html5 audio api 录音,如何使用HTML5 Web Audio API录制我的声音
  9. 打印完全二叉树java_java 完全二叉树的构建与四种遍历方法示例
  10. linux wget安装mysql_linux安装mysql
  11. 江苏2021高考成绩查询全省排名,江苏高考排名查询方法,2021年江苏高考成绩位次全省排名查询...
  12. Web前端和后端之区分
  13. Java书写文字格斗游戏
  14. 手机上传文件到ftp服务器,上传文件到iPhone上的FTP服务器(Upload File to FTP Server on i...
  15. 【oracle报错】ORA-28000
  16. 服务器设置密码修改导致的后果
  17. C# 获取汉字拼音首字母(修正X问题,真正修正)
  18. GET提交中%5B与%5D代表什么意思?
  19. 【C语言趣味教程】typedef 真爽不爽不要玩 | 初识结构体
  20. 快速获取系统字体列表

热门文章

  1. 中国IT工作者35岁后的发展出路调查报告(2)
  2. rancher/ui 路由资源对应表
  3. 软件体系结构层次风格
  4. 机器学习数据集(训练集、测试集)划分方法
  5. Jupyter Notebook修改字体大小、颜色等
  6. NTC热敏电阻原理及应用
  7. 他晒了一张奶酪照片,被判入狱13年半
  8. 解决org.apache.zookeeper.KeeperException$UnimplementedException:KeeperErrorCode = Unimplemented for /S
  9. SaltStack简介
  10. 1.DLL注入相关概念