OpenCV3計算機視覺Python語言實現筆記(一)


  Python3下OpenCV的安裝 :http://blog.csdn.net/lwplwf/article/details/61616493

1. 讀/寫圖像文件

  OpenCV的imread()函數imwrite()函數能支持各種靜態圖像文件格式。不同系統支持的文件格式不一樣,但都支持BMP格式,通常還應該支持PNG、JPEG和TIFF格式。

  無論哪種格式,每個像素都會有一個值,但不同格式表示像素的方式有所不同。如:

import cv2
import numpy as np

img = np.zeros((3, 3), 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]]    

# 每個像素都由一個8位整數來表示,即每個像素值的范圍是0~255

  (3, 3)

  [[[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)

  (3, 3, 3)  

# 此時每個像素有3通道

 

  可讀取一種格式的圖像文件,然后將其保存為另一種格式。如:

import cv2
image = cv2.imread('flower.jpg')  # 將‘flower.jpg’的圖片與.py文件放在同一目錄下,或者使用絕對路徑
cv2.imwrite('flower.png',image)

  程序運行后,可看到文件夾中多了'flower.png'的圖片

           

  在默認情況下,即使圖像文件為灰度格式,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圖像。

import cv2
import numpy as np

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() #顯示出來,不要也可以,但是一般都要了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM