首页 > 编程语言 >1 opencv-python图像读写模块

1 opencv-python图像读写模块

时间:2023-07-05 15:56:23浏览次数:44  
标签:窗口 img python 读写 cv2 opencv 图像 图片

这个分类记录自己学习opencv的随笔文档,方便以后查询和复习。python-opencv环境配置网上教程很多,此处就不做赘述了,该文档记录opencv最基础的图像读写和显示,工具是jupyter notebook。

1 opencv中,图像读取函数是 imread(filename, flags=None)

参数说明:

filename:读取图像的路径,通常支持jpg、png、bmp、tiff等格式文件。

flags:图片读入的模式,模式定义在cv::ImreadModels中,默认值为IMREAD_COLOR。还有一个常用的模式是:IMREAD_GRAYSCALE,对应值为 0,以灰度图方式读取图片。

imread函数返回一个BGR形式的图像对象,其类型为一个numpy数组。

2 显示图像的函数是 imshow(window_name, image)    参数说明:window_name是一个字符串,代表要在其中显示图像的窗口的名称。image是它是要显示的图像。

可以用 namedWindow(window_name, flag) 来定义一个窗口,如果没有定义会根据imshow的参数自动生成一个窗口,定义好的窗口可以用 resizeWindow(window_name,width,height) 来改变窗口大小。

import cv2   
import numpy as np

img=cv2.imread('C:/Users/86188/Desktop/test/python/cat.jpg',cv2.IMREAD_COLOR)  #读取图片
cv2.imshow('showimg',img) #显示图片 cv2.waitKey(0) #等待用户操作 cv2.destroyWindow('window') #销毁窗口

3  除了直接用opencv的imshow来显示图片,也可以用matplotlib来显示图片,但是需要在显示的时候进行图片通道翻转(直接用::-1,也可以用cvtColor()函数进行颜色通道翻转),因为正常图片的格式是rgb,但是opencv读取进来的格式是bgr。

         

 用opencv来显示图像通常需要好几行代码,可以自己封装成函数,需要的时候直接调用

       

 

4 在 OpenCV 中,图像是一个 NumPy 数组,我们可以使用numpy数组的属性来访问图像属性:

  • 图像类型 - 图像的数据结构。OpenCV中的图像是numpy.ndarray,我们可以将其访问为 type(img) 。
  • 图像形状 - 它是以 [H, W, C] 格式表示的形状。其中 H,W 和 C 分别是图像的 高度,宽度和通道数 ,我们可以将其访问为 img.shape 。

  • 图像大小 - 它是图像中像素的总数。它也是数组中元素的总数。我们可以将其访问为 img.size 。

  • 数据类型 - 它是图像数组元素的dtype。我们可以将其访问为 img.dtype 。

5 图片保存 imwrite(filename,img)   filename表示保存的文件名称,img是需要保存的图像对象。

创建窗口,读取显示和保存图像的实例如下:

import cv2

#创建窗口
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',640,480)

#读取图片
img = cv2.imread('./cat.jpg')

while True:
    cv2.imshow('img',img)
    key = cv2.waitKey(0)  #该函数的返回值为ASCLL码,参数0表示:等待 0 毫秒后,用户可以通过按键盘上的任意键来销毁所有窗口。
    
    if key == ord('q'): #如果键盘输入q,退出
        break
    elif key == ord('s'):  #如果键盘输入s,保存图片到 当前文件夹下
        cv2.imwrite('./mycat.png',img)
    else:
        print(key)
        
cv2.destroyAllWindows()  #销毁当前所有窗口

  

 

标签:窗口,img,python,读写,cv2,opencv,图像,图片
From: https://www.cnblogs.com/libai123456/p/17528760.html

相关文章

  • python 并发编程
    一、需要了解的概念1、进程和程序的区别程序就是一堆死的东西,没有生命周期进程是有生命周期的,当一个任务进行完毕之后,进程就不存在了2、cpu的工作机制1.当CPU遇到I/O操作的时候,会剥夺CPU的执行权限I/O密集型:inputoutput遇到阻塞,但是不需要占用大量的CPU资源,需要等待,比如:sle......
  • python环境问题--import matplotlib.pyplot as plt报错
        python环境配置好后,刚开始没问题,过几天用vscode写python代码的时候,突然导matplotlib包报错:DLLloadfailed:找不到指定的模块。    首先定位报错的具体代码,发现是导入matplotlib包报错,去掉那条命令后程序正常执行,然后继续尝试,importmatplotlib没有问题,但是im......
  • OpenCV4环境配置详细指南(C++)
      OpenCV编程学习今天正式开始,简要的记录一下,希望对大家有用。1:所需文件   开发工具:VisualStudio   下载地址   视觉库:OpenCV  下载地址2:安装  VisualStudio下载好后直接安装,一定要选择C++模块  OpenCV下载好后,双击解压到合适的位置,......
  • C++、Lua、Python字符串防止转义
    使用场景C++里测试路径需要转义,Windows复制路径里面的斜杠需要加斜杠,每次都需要操作比较麻烦,而且看着也不好看换行,代码里有时候硬编码一些文本、数据,依赖""的自动拼接和行末的斜杠,需要手动写\r\n换行C++Rawstringliteral以前用Lua,里有[[]],防止转义非常方便。后来了解到P......
  • python celery 使用
    目录结构配置点击查看代码fromceleryimportCelery,platformsfromkombuimportExchange,Queueplatforms.C_FORCE_ROOT=Truebroker='redis://127.0.0.1:6380/1'backend='redis://127.0.0.1:6380/2'app=Celery('sxj',b......
  • Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!
    本文将详细探讨如何在Python中连接全种类数据库以及实现相应的CRUD(创建,读取,更新,删除)操作。我们将逐一解析连接MySQL,SQLServer,Oracle,PostgreSQL,MongoDB,SQLite,DB2,Redis,Cassandra,MicrosoftAccess,ElasticSearch,Neo4j,InfluxDB,Snowflake,AmazonDynamoDB,MicrosoftAzureCosMosDB数据......
  • Python基础语法--课程笔记
    Smiling&Weeping----我的心是旷野的鸟,在你的眼睛里找到了它的天空定义和使用类:1.声明类:class类名:成员变量,成员函数2.定义类的对象:对象名=类名()3.成员变量:  公有变量私有变量__xxx4.构造函数: ......
  • 让python的lxml模块的xpath支持正则表达式
    python的lxml模块是处理xml文档的比较好用的工具,其中的xpath函数可以检索指定的元素,但是它不支持正则表达式,比如某个属性的值是否匹配某个正则表达式,就没有办法实现.不过可以利用它的自定义函数扩展功能来实现,如下代码所示:importrefromlxmlimportetreefromlxm......
  • [-002-]-Python3+Unittest+Selenium Web UI自动化测试之显示等待WebDriverWait
    1、WebDriverWait基本用法引入包#文件引入fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC每0.5s定位ID为userid的元素,如果定位成功,执行下面的代码;直至15s超时抛出异常可用来检查页面元素是......
  • python 导入错误 ImportError: Unable to import required dependencies: numpy
    python导入错误ImportError:Unabletoimportrequireddependencies:numpy  python3.9对应的numpy版本  参考:https://blog.csdn.net/guigenyi/article/details/126248488https://wenku.csdn.net/answer/0366fcc7857bccdefced2aaa09d7b02chttps://wenku.csdn.n......