当前位置: 首页 > news >正文

第二章 Opencv图像处理基本操作

目录

    • 1.取图像
      • 1-1.imread()方法
    • 2.示图像
      • 2-1.imshow()方法
      • 2-2.waitKey()方法
      • 2-3.destroyAllWindows()方法
      • 2-4.小总结
    • 3.保图像
      • 3-1.imwrite()方法
    • 4.看图像属性
      • 4-1.常见的三个图像属性

1.取图像

要对一幅图像进行处理,第一件事就是要读取这幅图像。

1-1.imread()方法

  • 语法格式:img = cv2.imread(filename, flags)

  • 参数说明:

    • filename:要读取的图像的文件路径(含文件名),相对/绝对路径均可;字符串类型。

    • flags:以什么颜色类型读取图像。默认值为1可以省略,以彩色读取;为0,以灰度读取。

    • img:读取了图像的所有像素值;数组类型。

      注:

      1.灰度图像以彩色读取,仍然是灰度图像。

      2.灰度图像的像素值为0(纯黑)~255(纯白),一共有256个灰度级。

  • 实例:

    img.png 为彩色图像;G_img.png为灰度图像。

    在这里插入图片描述

2.示图像

2-1.imshow()方法

  • 语法格式:cv2.imshow(winname, mat)

  • 参数说明:

    • winname:显示图像的窗口名;字符串类型。

    • mat:要显示的图像;ndarray类型。

      注:numpy中,矩阵的维度只能是≤2(只有二维及二维以内的数组与矩阵可相互转换),且是数组的一部分。

  • 实例:

    在这里插入图片描述

    2-2.waitKey()方法

    • 语法格式:retval = cv2.waitKey(delay)

    • 参数说明:

      • delay:等待用户按下键盘的时间,单位毫秒;超过时间自动执行(相当于自动按键了)。值为负数、0或者空时,表示无限等待。

      • retval:有按键按下时,接收该按键ASCII码;没有按键按下时(delay≠0条件下),接收-1。

        注:

        1.numpy中,矩阵的维度只能是≤2(只有二维及二维以内的数组与矩阵可相互转换),且是数组的一部分。

        2.有人可能会想,delay=0时,没有按键按下,retval接收到也是-1吗?其实不是,当没有按键按下时,retval是接收不到值的,程序相当于阻塞了,只有按下按键阻塞没了,retval才能接收到值(即键盘ASCII值)。键盘按下看作人为清除阻塞,则返回键盘ASCII;delay时间到了看作程序自己清除阻塞,则返回-1。

    • 实例:

      我按的是空格键,所以ascii是32。

      在这里插入图片描述

2-3.destroyAllWindows()方法

  • 介绍:销毁所有正在显示图像的窗口。

    • 语法格式:cv2.destroyAllWindows()

    • 参数说明:无

      注:cv2.destroyWindows(winname):可用来销毁指定窗口。

    • 实例:

      在这里插入图片描述

      按下按键一次后:

      在这里插入图片描述

      再按下一次:所有窗口被销毁,程序结束。

2-4.小总结

  • imshow方法,提供了一个用来显示图片的窗口并将窗口与指定的图片关联;waitKey方法才是真正显示图片并控制程序是否阻塞在图片显示的时刻;destroyAllWindows方法可以销毁窗口。

  • 显示图片需要窗口+图片,imshow提供了一个窗口和指定的图片,再用waitKey显示图片并阻塞程序在图片显示的时刻;通过按键或倒计时告诉waitKey看完了,waitKey就关闭阻塞,图片自然就消失了但还有个窗口,所以再用destroyAllWindows方法销毁窗口。

  • 综上,imshow方法常常后面跟着waitKey和destroyAllWindows方法(多个imshow时,在最后一个imshow后面跟着即可,因为真正显示图片的是waitKey方法)!

  • imshow只会和执行到imshow时的img绑定,后面就算img像素值变了也没关系。如下图所示。

  • 在这里插入图片描述

    上面这几点仅代表我个人看法!!!

3.保图像

3-1.imwrite()方法

  • 语法格式:cv2.imwrite(filename, img)

  • 参数说明:

    • filename:图像保存的文件路径(含文件名),相对/绝对路径均可;字符串类型。
    • img:数组类型,与上面imread方法中参数img一致。
  • 实例:

    当前.py文件下会生成一个new_img.png文件。

    在这里插入图片描述

4.看图像属性

4-1.常见的三个图像属性

  • shape:彩色图像为(垂直像素H, 水平像素W, 通道数C);灰度图像为(垂直像素H, 水平像素W)。灰度图像通道数C为1。

  • size:图像包含的像素个数=H*W*C。

  • dtype:图像的数据类型,应该就是像素值的数据类型。

  • 实例:

    在这里插入图片描述

http://www.lryc.cn/news/3313.html

相关文章:

  • 字节一面:在浏览器地址栏输入一个 URL 后回车,背后发生了什么?
  • 推荐3dMax三维设计十大插件
  • Arduino IDE 2.0.6中 ESP32开发环境搭建笔记
  • 商品秒杀接口压测及优化
  • NFC 项目前期准备工作
  • (C语言)数据的存储
  • C语言深度剖析之文件操作
  • RNN神经网络初探
  • 【flinkx】【hdfs】【ing】Cannot obtain block length for LocatedBlock
  • 【Day6】合并两个排序链表与合并k个已排序的链表,java代码实现
  • Swagger PHP
  • 谷粒商城-品牌管理-JSR303数据校验
  • Java零基础教程——数组
  • AirServer在哪下载?如何免费使用教程
  • 加载sklearn covtype数据集出错 fetch_covtype() HTTPError: HTTP Error 403: Forbidden解决方案
  • 理论六:为什么基于接口而非实现编程?有必要为每个类定义接口么?
  • (HP)react日常开发技巧
  • 【20230211】【剑指1】搜索与回溯算法II
  • STM32F103C8T6—库函数应用I2C/SPI驱动OLED显示中文、字符串
  • sql语句要注意的地方及常用查询语句
  • 数组去重、伪数组和真数组的区别以及伪数组如何转换成真数组
  • JavaScript内置支持类Array
  • GitLab CI-CD 学习笔记
  • K8S安装
  • 【C++】模板初阶STL简介
  • 备战蓝桥杯第一天【二分查找无bug版】
  • Java集合中的Map
  • 【java】springboot项目启动数据加载内存中的三种方法
  • 【GO】29.go-gin支持ssl/tls,即https示例
  • 逻辑仿真工具VCS的使用-Makefile