opencv學習筆記(一)——讀入圖像,大小調整,保存圖像,鍵盤控制,與matplotlib的對比,添加幾何圖形

import cv2
import numpy as np
import matplotlib.pyplot as plt

讀入圖像和顯示圖像

img = cv2.imread('cat.jpg',0)
cv2.imshow('image',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

cv2.waitKey() 是一個鍵盤綁定函數。需要指出的是它的時間尺度是毫 秒級。函數等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,如果 按下任意鍵,這個函數會返回按鍵的 ASCII 碼值,程序將會繼續運行。如果沒 有鍵盤輸入,返回值爲 -1,如果我們設置這個函數的參數爲 0,那它將會無限 期的等待鍵盤輸入。它也可以被用來檢測特定鍵是否被按下,例如按鍵 a 是否 被按下。

cv2.destroyAllWindows() 可以輕易刪除任何我們建立的窗口。如果你想刪除特定的窗口可以使用 cv2.destroyWindow(),在括號內輸入你想刪 除的窗口名。如果沒有這行代碼,在關閉圖像時會卡住。

調整圖像窗口大小

img1 = cv2.imread('me.jpg',0)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img1)
cv2.waitKey(0) 
cv2.destroyAllWindows()

有的圖像分辨率比電腦屏幕的分辨率大,如果不調整的話會顯示不全,這時就需要調整窗口大小。使 用 到 的 函 數 是 cv2.namedWindow()。 初始設定函數標籤是cv2.WINDOW_AUTOSIZE。但是如果你把標籤改成cv2.WINDOW_NORMAL,你就可以調整窗口大小了。當圖像維度太大, 或者要添加軌跡條時,調整窗口大小將會很有用。

保存圖像

cv2.imwrite('img.png',img)

鍵盤控制

img = cv2.imread('cat.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()

上面的程序將會加載一個灰度圖,顯示圖片,按下’s’鍵保存後退出,或者按下 ESC 鍵退出不保存。

matplotlib與opencv的對比

img = cv2.imread('cat1.jpg')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img);plt.title('bgr') 
plt.subplot(122);plt.imshow(img2);plt.title('rgb') 
plt.show()

cv2.imshow('bgr image',img)
cv2.imshow('rgb image',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()


通過比較可以看出,opencv和matplotlib的rgb通道順序時有差別的,用opencv讀取圖像時三色通道順序是b,r,g,用它顯示圖像時也必須按照這個順序才能正常顯示圖像,而matplotlib的順序是r,g,b

在圖像上添加幾何圖形

1.線段

img=np.zeros((512,512,3), np.uint8)#創建一個image
cv2.line(img,(0,0),(511,511),(255,0,0),5)#在img上畫一條線,起點(0,0),終點(511,511,),顏色設置爲(255,0,0)即爲藍色,粗細爲5
cv2.imshow("line", img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()


2.矩陣 ,圓,橢圓

cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)#左上座標和右下座標
cv2.circle(img,(447,63), 63, (0,0,255), -1)#中心點座標,半徑,顏色,中間填充
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)#橢圓,中心座標,長軸,短軸,逆時針旋轉角度,橢圓弧演順時針方向起始的角度和結束角度,如果是 0 和 360,就是整個橢圓
cv2.imshow("cir", img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

3.添加文字

font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)#位置,字體,大小,顏色,粗細
cv2.imshow("cir", img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

我們可以看到,這些添加操作是在img數組上進行操作的,所以在顯示文字的圖像上之前添加的圖形仍然在圖像中。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章