opencv-python学习【1】图片的显示与保存

一.安装与导入

安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

导入 import cv2

注意:

   p y c h a r m pycharm pycharm 中安装 cv2 后可能出现 cv2 不提示方法的问题,如果你的 cv2​ 安装路径为 ‘…\venv\Lib\site-packages\cv2’,在 cv2​ 该文件夹下有一个 cv2.pyd 文件,复制这个文件到 ‘…\venv\Lib\site-packages’ 下,然后重启 p y c h a r m pycharm pycharm 即可。

二.读取图像

1.相关API

  • retval = cv2.imread(filename[, flags]) 读取图片
    • 返回值:
      • retval:读取到的图像,未读取到时返回 None
    • 输入参数:
      • filename:要读取图像的完整文件名
      • flags:读取标记,以何种形式来读取文件 。flag 具体值如下,输入时既可以输入,也可以输入数值
数值 含义
cv2.IMREAD_UNCHANGED -1 保持原格式不变(依然是BGR格式)
cv2.IMREAD_GRAYSCALE 0 将图像调整为单通道的灰度图
cv2.IMREAD_COLOR 1 将图像调整为3通道的BGR格式(默认)
cv2.IMREAD_ANYDEPTH 2 当载入的图像深度为16或32位时返回其对应的深度图像,否则转换为8位图像
cv2.IMREAD_ANYCOLOR 4 以任何可能的颜色格式读取图像
cv2.IMREAD_LOAD_GDAL 8 使用gdal驱动程序加载图像
cv2.IMREAD_REDUCED_COLOR_2 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/2
cv2.IMREAD_REDUCED_COLOR_4 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/4
cv2.IMREAD_REDUCED_COLOR_8 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/8
cv2.IMREAD_REDUCED_GRAYSCALE_2 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/2
cv2.IMREAD_REDUCED_GRAYSCALE_4 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/4
cv2.IMREAD_REDUCED_GRAYSCALE_8 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/8

2.示例

import cv2

bgr = cv2.imread('dog.jpg')
print(bgr)

三.显示图像

1.相关API

  • cv2.namedWindow(winname)----创建指定名称的窗口,窗口用于显示图片
    • winname:窗口名称
  • cv2.imshow(winname, img)----显示图像
    • winname:窗口名称
    • img:要显示的图片
  • retval = cv2.waitkey([delay])----等待按钮,当用户按下键盘后该语句执行,并返回获取值
    • retval:返回值。如果有按键被按下,就返回按键的 ASCII 码,没有则返回-1
    • delay:等待键盘触发的时间,单位ms。当 d e l a y ≤ 0 delay\leq0 delay0 时无限等待, d e l a y delay delay 默认为0。
  • cv2.destroyWindow(winname)----销毁指定窗口
    • winname:窗口名称
  • cv2.destroyAllWindows()----销毁所有窗口

2.示例

(1).显示图片

import cv2

bgr = cv2.imread('dog.jpg')
cv2.namedWindow('dog')	# 创建窗口的这一步可以省略,省略时cv2.imshow('dog',bgr)会自己执行这一步
cv2.imshow('dog',bgr)
cv2.waitKey()

  注意:opencv 读取到的图片默认情况下是 bgr 格式,但是使用 cv2.imshow 显示图片时它又会把 bgr 格式转回为 rgb 格式去显示。所以在读取图片后如果不进行格式转换,用 matplotlib 去显示图片时,图片将会是如下图的 bgr 格式。

cv2显示RGB格式 matplotlib显示BGR格式

(2).waitKey显示不同图片

import cv2
dog = cv2.imread('dog.jpg')
cat = cv2.imread('cat.jpg')
cv2.imshow('dog',dog)
key = cv2.waitKey()
if key == ord('A'):
    cv2.imshow('another_dog',dog)
    if key == ord('B'):
        cv2.imshow('cat',cat)
        cv2.waitKey()

  程序会先显示一张狗的图片,按下A后显示 ‘dog’ 与 ‘another_dog’ 两个窗口,而按下B后显示 ‘dog’ 与 ‘cat’ 两个窗口。

(3).destroyWindow销毁指定窗口

import cv2

dog = cv2.imread('dog.jpg')
cv2.imshow('dog',dog)
cv2.waitKey()
cv2.destroyWindow('dog')

  按下任意按键销毁 ‘dog’ 窗口。

(4).destroyAllWindows销毁所有窗口

import cv2

dog = cv2.imread('dog.jpg')
cv2.imshow('dog1',dog)
cv2.imshow('dog2',dog)
cv2.waitKey()
cv2.destroyAllWindows

  按下任意按键销毁 ‘dog1’ 和 ‘dog2’ 窗口。

四.保存图像

1.相关API

  • retval = cv2.imwrite(filename, img[, params])
    • filename:要保存目标文件的完整路径文件名,包含扩展名
    • img:要保存的图片名称
    • retval :保存成功返回 True,失败返回 False
    • params:保存类型参数,可选。默认为None

2.示例

import cv2

dog = cv2.imread('dog.jpg')
cv2.imwrite('res.png',dog)

  默认读取图片后,保存图片功能也会将 bgr 转为 rgb 格式进行保存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340