zoukankan      html  css  js  c++  java
  • Opencv怎么读入,显示,保存图像-OpenCV步步精深

    怎么读入图像呢?

    我们用

    1. img = cv2.imread('图像路径原图像名称',0)

    原图像名称要有后缀 .png , .jpg等等原图像带有的后缀。

    这里我们着重说明一下图像路径,这个路径一定要是全英文,没有数字,没有中文,没有各种符号,说的够清楚吧,除了路径分隔符,其余的一切一切不是英文字母的都不能用,包括以后出现图像路径,都要谨记这一点。

    相信有很多和我一样的初学者面临的第一个问题就是这个,我为此找了好多帖子,好多资料,但都没有写明这个问题,我希望这里给大家提个醒,会让大家节省很多精力去干更多有意义的事。

    另一个参数 0

    这个参数是要告诉函数应该如何读取这幅图片,我们用0表示默认的原图像,日后我们会用到更多的参数,这里简单一提。

    cv2.IMREAD_COLOR:读入一副彩色图片;

    cv2.IMREAD_GRAYSCALE:以灰度模式读入图片;

    cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道。

    怎么显示图像呢?

    1. cv2.imshow('显示图像窗口的名称', img)

    怎么保存图像呢?

    1. cv2.imwrite('图像新名称',img)

    同图像新名称也要带有后缀,这个图像新名称所带有的后缀,可以不同于原图像名称的后缀,例如如果原图像的后缀为.png,图像新名称可以为.png 也可以是.jpg。

    整合这三个基本内容,我们就可以进行一个最基本的程序啦

    • 首先导入opencv的包
    1. import cv2
    • 还要导入numpy包
    1. import numpy as np
    • 开始读入图像吧,就拿我的柠檬来做例子吧
    1. img = cv2.imread('C:UsersAdministratorDesktopopencvimglemongrowup.png',0)
    • 然后我们可以显示这个图像咯
    1. cv2.imshow('image',img)
    • 显示的图像会出现一闪而过的情况,这是正常的,因为我们要设定一个函数来让图像一直显示
    1. k = cv2.waitKey(0)&0xFF
    2. if k == 27:
    3.     cv2.destroyAllWindows()

    cv2.waitKey(0)&0xFF这个函数就是64位下的让窗口一直显示的函数啦

    27是ESC的ASCII码,这句话就是说当按下ESC的时候,关闭图像窗口,不按

    我们用

    cv2.destroyAllWindows() 删除窗口,删除指定窗口的话就要在()内加入窗口的名称,这个我们以后会用到。不写这句没关系,不过你是关不掉打开的图像窗口的,只能结束主程序才可以关闭图像窗口。

    • 然后我们要保存图像,
    1. elif k == ord('s'):
    2.     cv2.imwrite('lemongrowupgray.jpg',img)
    3.     cv2.destroyAllWindows()我们按下S的时候会保存

    我们保存的图像有人找不到啦,我悄悄告诉你们图像就保存在你写的这个程序的目录中,例如我这个程序保存在了C:UsersAdministratorDesktop我的博客opencv目录下,保存的图像就在C:UsersAdministratorDesktop我的博客opencv目录里呢~

    所有代码双手奉上

    这就是第一个程序,浩浩工程,漫漫长路,我们准备一起去大干一场吧!


    # -*- coding:utf-8 -*-
    """
    Created on Sun Dec 25 12:08:01 2016

    @author: Y

    """
    import cv2
    import numpy as np

    #一般而言写程序的注释部分习惯于用英文,不过今后为了大家能够阅读方便,改用中文
    #以灰度模式载入彩色图片(简单而言,就是把彩色图片变成黑白图片了,将彩色图像转换为灰度模式时,所有的颜色信息都将被删除)
    img = cv2.imread('C:UsersAdministratorDesktopopencvimglemongrowup.png',0)
    cv2.imshow('image',img)
    k = cv2.waitKey(0)&0xFF
    if k == 27:
    cv2.destroyAllWindows()
    elif k == ord('s'):
    cv2.imwrite('lemongrowupgray.jpg',img)
    cv2.destroyAllWindows()

    运行结果
    按下s后图像就保存在这

    多说一句,程序里我们用    ''    或者     ""    都是可以的,而我更喜欢    ''    一点,毕竟看起来干干净净。今天是圣诞节,昨天是平安夜,我是Y,祝大家天天开心,节日快乐!

  • 相关阅读:
    开源框架Tiny之内容组成
    开源框架Tiny之内容组成
    TinyUI组件开发示例
    一个Maven工程中,不同的模块需要不同的JDK进行编译
    Tiny中文分词
    在Linux下搭建Tiny开发环境
    业务流程引擎
    Tiny并行计算框架之复杂示例
    Tiny并行计算框架之实现机理
    笔记(一)
  • 原文地址:https://www.cnblogs.com/yujiachen/p/7654987.html
Copyright © 2011-2022 走看看