基于python的数字图像处理--学习笔记(一)_数字图像处理代码整理python-程序员宅基地

技术标签: python  数字图像处理  opencv  开发语言  

基于python的数字图像处理--学习笔记(一)

图像处理python常用库和函数

使用opencv-python读取图片数据。并使用numpy库对图片的矩阵数据进行变换处理,实现平移旋转等操作。

1、opencv-python库

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。 (CV:Computer Vision,计算机视觉)。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用。

  • 安装opencv-python库
    1)普通安装
    pip install opencv-python
    2)针对cv2中缺少的部分函数,可以采用扩展安装扩展安装
    pip install opencv-contrib-python
    如果已经安装OpenCv2,则需要先卸载 再安装
    pip uninstall opencv-python
  • 在python中引用opencv-python库
    需注意,虽然库的名称是opencv-python,但是引用库时应引用cv2
    import cv2
    同样,在pycharm中安装库时应选择opencv-python库,而不是cv2。在pycharm安装cv2库失败,应安装opencv-python

2、opencv-python常用函数

1、 cv2.imread(filepath,flags) #读入一张图像

  • filepath:要读入图片的完整路径 flags:读入图片的标志
  • flag有如下参数
    cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
    cv2.IMREAD_GRAYSCALE:读入灰度图片
    cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
  • alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明

2、 cv2.imshow(wname,img) #显示图像

  • wname:是显示图像的窗口的名字
  • img:是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小
  • imshow函数常和 cv2.waitKey(n)共同使用,如果函数以imshow结尾,运行结果图片会闪退。

3、 cv2.waitKey(n) #按键等待函数

  • waitKey() 函数的功能是不断刷新图像 , 频率时间为输入参数n, 单位为ms ,默认值为1ms。如参数等于1000,则图像保持1s。
  • 参数为0表示无限等待
  • 返回值为当前键盘按键值
  cv2.imshow('image',img)
  cv2.waitKey(0) #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。
  #若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
  cv2.destroyAllWindow() #销毁所有窗口
  cv2.destroyWindow(wname) #销毁指定窗口

4、cv2.imwrite(file,img,num) #保存一个图像

  • file:第一个参数是要保存的文件名
  • img:第二个参数是要保存的图像
  • num:可选的第三个参数,针对特定的格式:
    对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;
    对于png ,第三个参数表示的是压缩级别。默认为3.
  • 注意:
    cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
    cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

5、cvtColor(Mat src, Mat dst, int code) #颜色空间转换函数
可以实现RGB颜色向HSV,HSI等颜色空间转换,也可以转换为灰度图。

  • src:表示来源的矩阵。

  • dst:表示目的地的矩阵。

  • code:表示转换类型的整数代码
    COLOR_RGB2GRAY
    COLOR_RGB2HSV
    COLOR_RGB2BGR

  • dstCn:用于指定目标图像的通道数,如果指定的值是默认值0,那么通道数将由输入图像和颜色转换码决定。可以不写。

    参考:opencv学习笔记(三)颜色转换 cvtColor

6、img.copy() #图像复制

7、cv2.resize(image, image2,dsize) #图像缩放
输入原始图像,输出新图像,图像的大小

8、cv2.flip(img,flipcode) #图像翻转。

  • flipcode控制翻转效果:
    flipcode = 0:沿x轴翻转;
    flipcode > 0:沿y轴翻转;
    flipcode < 0:x,y轴同时翻转

9、cv2.getRotationMatrix2D(center,angle,scale) #图像翻转。

  • center:源图像中的旋转中心。
  • angle:以度为单位的旋转角度。 正值表示逆时针旋转(假设坐标原点为左上角)
  • scale:各向同性比例因子,即缩放比例
    参考:getRotationMatrix2D函数

10、 cv2.convertScaleAbs(depth_image, alpha) 通过线性变换将数据转换成8位[uint8]
通过线性变换将数据转换成8位[uint8]

11、 cv2.normalize(array,None,0,255,cv2.NORM_MINMAX) 将图片的值进行范围调整

在这里插入图片描述

参考:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略

参考:【python】库丨opencv-python丨

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46237636/article/details/127387931

智能推荐

mint-ui 打不开解决办法_mint 软件管理器打不开-程序员宅基地

文章浏览阅读943次。打开hosts文件:185.199.109.153 youzan.github.io185.199.111.153 mint-ui.github.io185.199.111.153 elemefe.github.io_mint 软件管理器打不开

Ubuntu 系统中通过火狐OS模拟器轻松体验 Firefox OS-程序员宅基地

文章浏览阅读128次。西班牙已经发布了基于Firefox OS的手机,但是不是任何人能体验到,很都人都在苦苦等待,现在我们有另一种方法,不需要任何命令,没有纷繁复杂的安装步骤,在该文中,会教大家在ubuntu系统中一种轻松体验 Firefox OS。只需在火狐浏览器中就可是实现:firefoxosvs4火狐OS模拟器是为开发者使用的,用来测试他们的程序的的火狐浏览..._基于ubuntu的firefox os

单元测试的重要性【转自”至简李云“博客】_单元测试有利于重构-程序员宅基地

文章浏览阅读755次。本文出自 “至简李云” 博客,http://yunli.blog.51cto.com/831344/168865,作者:李云,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明  单元测试(Unit Test, UT)是一个老生常谈的话题,在对这篇文章进行博客归类时,我还是将其归类为开发技术,尽管其带有测试两个字。如何做单元测试不是我这里想说的,而是业界对其认识的认识及重视是我想指出的。_单元测试有利于重构

SparkSQL常用聚合函数_sparksql 聚合函数-程序员宅基地

文章浏览阅读949次,点赞2次,收藏7次。聚合函数Aggregations一、简单聚合 1.1 数据准备 1.2 count 1.3 countDistinct 1._sparksql 聚合函数

Ubuntu远程连接MySQL_ubuntu 连接远程mysql-程序员宅基地

文章浏览阅读308次。Mysql 想要远程客户端链接,必须给root修改可以远程访问的权限一、在连接服务器后,操作mysql系统数据库mysql -u root -puse mysql;查询用户表命令:select User,authentication_string,Host from user这里也可以看出host默认都是localhost访问权限二、接下来就是最重要的部分了:..._ubuntu 连接远程mysql

graylog使用总结这一篇就够了-程序员宅基地

文章浏览阅读1.3w次,点赞38次,收藏70次。graylog使用 graylog报警配置 graylog接springboot graylog使用总结 graylog邮件通知_graylog

随便推点

JavaScript无阻塞加载具体方式-程序员宅基地

文章浏览阅读467次。将脚本放在底部。\还是放在head中,用以保证在js加载前,能加载出正常显示的页面。\<script>标签放在\前成组脚本:由于每个\<script>标签下载时阻塞页面解析过程,所以限制页面的\<script>总数也可以改善性能。适用于内联脚本和外部脚本。非阻塞脚本:等页面完成加载后,再加载js代码。也就是,在window.onload事件发出..._引用外部scripts 无阻塞请求

SVN merge 三种方式-程序员宅基地

文章浏览阅读866次。SVN merge 三种方式转载1、Merge a range of revisions2、Reintegrate a branch3、Merge two different trees——————————————————————————————————————————————————————以下是转载自chunanyong的一篇关于svn分支合并类型的文章,出..._svn merge tree

lxc和android的双系统,基于LXC的Android系统虚拟化技术①.PDF-程序员宅基地

文章浏览阅读569次。基于LXC的Android系统虚拟化技术①.PDF计算机系统应用ISSN1003-3254,CODENCSAOBN E-mail:csa@ComputerSyste..._lxc容器技术运行安卓系统

那么作为一名技术er,你是如何系统的学习it技术的呢?-程序员宅基地

文章浏览阅读60次。学习IT技术需要有系统化的学习计划和良好的学习方法,需要选择合适的学习资料,保持持续学习状态,并营造良好的学习环境。大家可以结合自己的实际情况,制定适合自己的学习计划,利用各种学习工具提升自己的技术水平。IT技术是一个不断更新、不断发展的领域,学习IT技术需要保持持续的学习状态。安排休息时间 :休息时间同样很重要,适当地安排休息时间,既可以缓解学习压力,同时,对于记忆新事物和技能的帮助也是巨大的。制定学习计划表:分别制定每周、每月、与学习目的有关的计划,这可以帮助我们有效地安排时间,提升学习效率。

HTML在线文本编辑器实现原理,富文本编辑器的简单实现原理-程序员宅基地

文章浏览阅读466次。DOCTYPE html>富文本编辑器实现原理title>#edit{height:260px;width:100%;overflow:scroll;border:solid 1px black}style>head>div>居中button>左对齐button>右对齐button>添加缩进button>去掉缩进button>宋体button>大字体button>红色字体button>..._html标签在线转富文本

13个免费的开源GIS软件_开源 gis-程序员宅基地

文章浏览阅读6.7w次,点赞18次,收藏159次。GIS派文章地址:13个免费的开源GIS软件QGISQGIS是一个开放源码的地理信息系统。该项目诞生于2002年5月,并于同年6月作为SourceForge上的一个项目建立。我们一直在努力使GIS软件(传统上是昂贵的专有软件)成为任何人都可以使用个人电脑的可行前景。QGIS目前运行在大多数Unix平台、Windows和macOS上。QGIS是使用Qt工具包(https://www.qt.io)..._开源 gis

推荐文章

热门文章

相关标签