1.准备工作

没学过Python...

然后再cmd下输入  pip install opencv-python

还装了个IDE   PyCharm

2.读取和显示一张图片

importcv2 as cv

img= cv.imread("1.png")#读取图片 这里1.png和python文件在同一目录下

cv.imshow("1",img)#显示图片  ""里面是窗口的名称

3.查阅的函数资料

imread函数

imread为image read的缩写,即图像读取的意思

【函数原型】cv2.imread(path_of_image, intflag)

参数1:需要读入图像的路径

参数2:标志以什么形式读入图像,可以选择一下方式:

cv2.IMREAD_COLOR【1】: 加载彩色图像。任何图像的透明度都将被忽略。它是默认标志

cv2.IMREAD_GRAYSCALE【0】: 以灰度模式加载图像

cv2.IMREAD_UNCHANGED【-1】: 保留读取图片原有的颜色通道

inshow函数

【函数原型】cv2.imshow(windows_name, image)

参数1: 窗口名称(字符串)

参数2: 图像对象,类型是numpy中的ndarray类型,注:这里可以通过imutils模块改变图像显示大小

cvNamedWindow函数

该函数为开放计算机视觉(OpenCV)库库函数,用来创建窗口显示图像

cv2.namedWindow(‘窗口标题’,默认参数)

窗口大小可以改变:cv2.namedWindow("image",cv2.WINDOW_NORMAL)   或者  cv2.namedWindow('image',cv2.WINDOW_GUI_NORMAL)

窗口大小不可以改变:cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)

窗口大小自适应比例:cv2.namedWindow("image",cv2.WINDOW_FREERATIO)

窗口大小保持比例:cv2.namedWindow("image",cv2.WINDOW_KEEPRATIO)

显示色彩变成暗色:cv2.namedWindow('image',cv2.WINDOW_GUI_EXPANDED)

cv2.imshow(‘窗口标题’,image),如果前面没有cv2.namedWindow,就自动先执行一个cv2.namedWindow()

关闭特定窗口:void destroyWindow(const string& winname)

关闭所有HighGUI窗口:void destroyAllWindows()

cvwaitKey函数

函数的功能是不断刷新图像,频率时间为delay,单位为ms

它显示指定的图像。毫秒。否则,它就不会显示图像。例如,waitKey(0)将无限地显示窗口,直到任何按键按下(它适合于图像显示)

waitKey(25)将显示一个框架,25毫秒后,显示将自动关闭  (如果把它放到一个循环中去读视频,它将显示视频帧逐帧)

1.waitKey()与waitKey(0),都代表无限等待,waitKey函数的默认参数就是int delay = 0,故这俩形式本质是一样的。

2.waitKey(n),等待n毫秒后,关闭显示的窗口。

cvCvtColor是Opencv里的颜色空间转换函数

4.代码

1 importcv2 as cv2 importnumpy as np3

4

5 defget_image_info(image):6 print(type(image))7 print(image.shape)8 print(image.size) #高、宽、通道数

9 print(image.dtype) #字节位数占多数 高*宽*通道数

10 pixel_data =np.array(image)11 print(pixel_data)12

13

14 defvideo_demo():15 capture = cv.VideoCapture(0) #既支持视频文件的读取,也支持从摄像机中视频的读取

16 whileTrue:17 ret, frame =capture.read()18 #ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False,后面的frame该帧图像的三维矩阵BGR形式

19 #frame = cv.flip(frame, 1) #左右镜像

20 cv.namedWindow("video", cv.WINDOW_AUTOSIZE)21 cv.imshow("video", frame)22 c = cv.waitKey(50) #如果50ms内有按键 有返回按键的ASCII码值

23 if c == 27: #ESC键的ASCII码十进制表示为27

24 break

25

26

27 src = cv.imread("1.png")28 cv.namedWindow("image", cv.WINDOW_NORMAL)29 cv.imshow("image", src) #显示读进来的图片

30 get_image_info(src)31 gray =cv.cvtColor(src, cv.COLOR_BGR2GRAY)32 cv.imwrite("1_gray.png", gray) #保存修改后的图片

33 video_demo()34 cv.waitKey(0)35 cv.destroyAllWindows()

5.效果

显示的图片

窗口大小是可改变的

图片在计算机看来是一个结构化存储的数据信息

图像属性:通道数目、高和宽、像素数据、图像类型

python opencv 保存图片_【python-opencv 】一、图像的加载与保存相关推荐

  1. keras构建卷积神经网络_在Keras中构建,加载和保存卷积神经网络

    keras构建卷积神经网络 This article is aimed at people who want to learn or review how to build a basic Convo ...

  2. python画菊花_使用css3实现小菊花加载效果

    使用css3实现小菊花加载效果 最常见的就是我们用到的加载动画.加载动画的效果处理的好,会给页面带来画龙点睛的作用,而使用户愿意去等待.而页面中最常用的做法是把动画做成gif格式,当做背景图或是img ...

  3. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  4. OpenCV图像的加载、显示

    OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...

  5. c++版本opencv(02-第一个OpenCV程序 03.图像加载与保存)

    c++版本opencv(02-第一个OpenCV程序) 一.02-第一个OpenCV程序 二,03.图像加载与保存 来自网易云课堂 一.02-第一个OpenCV程序 如果加载到了之后呢,我们就要对它进 ...

  6. python爬取qq群成员_Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码...

    一位伙计自己开了个游戏室,想在群里拉点人,就用所学知识帮帮忙,于是就有了这篇文章,今天小编特此通过实例代码给大家介绍下Python selenium 加载并保存QQ群成员去除其群主.管理员信息的示例代 ...

  7. Python gensim库使用word2vec 加载和保存模型、在预训练基础上训练自己的预料

    Python gensim库使用word2vec 常见: gensim.models.word2vec.Word2Vec(size=300, sg=1, min_count=1) 加载和保存模型 ge ...

  8. 使用Hibernate加载或保存图像-MySQL

    本教程将引导您逐步了解如何使用Hibernate从数据库( MySQL )保存和加载图像. 要求 对于此示例项目,我们将使用: Eclipse IDE (您可以使用自己喜欢的IDE): MySQL ( ...

  9. glide 加载webp_如何使您的网站通过WebP图像快速加载闪电

    glide 加载webp by Carmen Chung 通过钟Car 如何使您的网站通过WebP图像快速加载闪电 (How to make your website load lightning f ...

最新文章

  1. VMware Workstation Pro 共享文件夾
  2. 四周第四次课 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 x
  3. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)
  4. java环境教程_window下Java环境配置图文教程
  5. 获取iOS任意线程调用堆栈(四)符号化实战
  6. 使用for循环嵌套实现乘法口诀表
  7. python使用t-sne算法降维,方便可视化
  8. 软件架构的六大设计原则
  9. OptiSystem应用:激光雷达系统设计
  10. uniapp使用网易易盾
  11. GB28181学习之路——eXosip获取IP和端口
  12. 监控容器并实现邮箱报警(cAdvisor 、AlertManager)
  13. pic单片机流水灯循环右移c语言,PIC单片机流水灯程序
  14. 《云知声黄伟:未来谁能成为 AI 领域的 BAT ?》笔记
  15. 常见的网络攻击方法与防范措施
  16. 【毕设记录】第一篇:开题,整体App计划
  17. UWP中的Direct2D
  18. html5沙漏动画,CSS3 沙漏动画
  19. 负荷需求响应模型matlab 通过分时电价方式下的负荷需求响应模型得到负荷响应前后变化情况,可以看到明显呈现削峰填谷的作用
  20. 《计算机组成原理》— 计算机组成原理(一)

热门文章

  1. 数据结构基础知识点总结
  2. electron调用python_Electron+Python界面开发(通过zerorpc)
  3. 《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全
  4. 软件测试工程师规划需要学什么技能?资深测试分析总结......
  5. java——百钱买百鸡
  6. js 根据出生年月计算年龄 精确到天
  7. AR vs VR:哪种技术更有潜力改变未来?
  8. l2正则化java代码_L1与L2正则化
  9. 不走寻常路的常识逻辑学家:Lisp之父约翰•麦卡锡
  10. 永磁同步电机转子位置估算专题——正交锁相环