zoukankan      html  css  js  c++  java
  • OpenCV3 for python3 学习笔记1

      

      1、读/写图像文件

        OpenCV的imread()函数imwrite()函数能支持各种静态图像文件格式。不同系统支持的文件格式不一样,但都支持BMP格式,通常还应该支持PNG、JPEG和TIFF格式。

        无论哪种格式,每个像素都会有一个值,但不同格式表示像素的方式有所不同。如:

    import cv2
    import numpy as np
    import os
    
    img = np.zeros((300, 300), dtype = np.uint8)    # 通过二维NumPy数组来简单创建一个黑色的正方形图像
    print(img)                                  # 在控制台打印该图像
    print(img.shape)                            # 通过shape属性来查看图像的结构,返回行和列,如果有一个以上的通道,还会返回通道数
    img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)  # 利用cv2.cvtColor函数将该图像转换成BGR格式
    print(img)
    print(img.shape)
    cv2.namedWindow("Image")                    # 显示该图像
    cv2.imshow("Image", img)
    cv2.waitKey ()

         结果为:

    [[0 0 0 ... 0 0 0]
     [0 0 0 ... 0 0 0]
     [0 0 0 ... 0 0 0]
     ...
     [0 0 0 ... 0 0 0]
     [0 0 0 ... 0 0 0]
     [0 0 0 ... 0 0 0]]
    # 每个像素都由一个8位整数来表示,即每个像素值的范围是0~255
    (300, 300)
    [[[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]
    
     [[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]
    
     [[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]
    
     ...
    
     [[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]
    
     [[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]
    
     [[0 0 0]
      [0 0 0]
      [0 0 0]
      ...
      [0 0 0]
      [0 0 0]
      [0 0 0]]]
    # 现在每个像素都由一个三元数组表示,并且每个整型向量分别表示一个B,G和R通道。其他色彩空间(如HSV)也以同样的方式来表示像素,只是取值范围和通道数目不同(例如,HSV色彩空间的色度值范围为0~180)
    (300, 300, 3)
    View Code

        

      2、可读取一种格式的图像文件,然后将其保存为另一种格式。如:

    image = cv2.imread('flower.png')  # 将‘flower.jpg’的图片与.py文件放在同一目录下,或者使用绝对路径
    cv2.imwrite('flower.jpg',image)

        

        

        在默认情况下,即使图像文件为灰度格式,imread()函数也会返回BGR格式的图像,BGR与RGB表示的色彩空间相同,但字节顺序相反。

        下面列出的选项可作为imread()函数的参数:

        IMREAD_ANYCOLOR = 4

        IMREAD_ANYDEPTH = 2

        IMREAD_COLOR = 1

        IMREAD_GARYSCALE = 0

        IMREAD_LOAD_GDAL = 8

        IMREAD_UNCHANGED = -1

        cv2.imread(‘图像名称’,’可选参数’) 
          可选参数决定读入图像的模式: 
          0:读入的为灰度图像(即使图像为彩色的) 
          1:读入的图像为彩色的(默认); 

         如下面的例子将加载的PNG文件作为灰度图像(在这个过程中会丢失所有的颜色信息),然后又将其保存为灰度的PNG图像。

    garyImage = cv2.imread('flower.jpg',cv2.IMREAD_GRAYSCALE)
    cv2.imwrite('flower.png',garyImage)

        

        

        无论采用哪种模式,imread()函数会删除所有alpha通道的信息(透明度)。imwrite()函数要求图像为BGR或灰度格式,并且每个通道要有一定的位(bit),

        输出格式要支持这些通道。例如,bmp格式要求每个通道有8位,而PNG允许每个通道有8位或16位

        储存图像函数:cv2.imwrite(‘保存的图像名’,图像,‘参数’) 
        正常的图像储存使用就是cv2.imwrite(‘保存的图像名’,图像),后面一个参数默认,保存的图像名还得带类型,比如jpg,bmp等等,OpenCV目前支持读取bmp、jpg、png、tiff等常用格式,

        第三个参数较复杂,还得分是jpg、bmp等等图像的类型不同而不同,其实就是决定了图像储存大小,清晰度的,默认的就很好

         此外,还有一种显示图像的方式。

      

    import cv2
    from matplotlib import pyplot as plt
    img = cv2.imread('flower.jpg',0);#打开为灰度图像
    plt.imshow(img, 'gray') #必须规定为显示的为什么图像
    # plt.xticks([]),plt.yticks([]) #隐藏坐标线
    plt.show() #显示出来,不要也可以,但是一般都要了

        

  • 相关阅读:
    Documentum常见问题1—Tomcat应用内存溢出
    Documentum常见问题3—保存搜索Saved Searches提示用户对文件柜无权限
    Request.QueryString[]和Request[]的区别
    将money转换成大写汉字
    Windows API(一) 什么是Windows API
    C#将数据导出到Excel汇总
    开始—运行—命令
    手动绘制DataTable
    触发器Deleted表和Inserted表
    功能强大的Regsvr32命令
  • 原文地址:https://www.cnblogs.com/shaosks/p/10396003.html
Copyright © 2011-2022 走看看