怎么讀入圖像呢?
我們用
- img = cv2.imread('圖像路徑\原圖像名稱',0)
原圖像名稱要有后綴 .png , .jpg等等原圖像帶有的后綴。
這里我們着重說明一下圖像路徑,這個路徑一定要是全英文,沒有數字,沒有中文,沒有各種符號,說的夠清楚吧,除了路徑分隔符\,其余的一切一切不是英文字母的都不能用,包括以后出現圖像路徑,都要謹記這一點。
相信有很多和我一樣的初學者面臨的第一個問題就是這個,我為此找了好多帖子,好多資料,但都沒有寫明這個問題,我希望這里給大家提個醒,會讓大家節省很多精力去干更多有意義的事。
另一個參數 0
這個參數是要告訴函數應該如何讀取這幅圖片,我們用0表示默認的原圖像,日后我們會用到更多的參數,這里簡單一提。
cv2.IMREAD_COLOR:讀入一副彩色圖片;
cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖片;
cv2.IMREAD_UNCHANGED:讀入一幅圖片,並包括其alpha通道。
怎么顯示圖像呢?
- cv2.imshow('顯示圖像窗口的名稱', img)
怎么保存圖像呢?
- cv2.imwrite('圖像新名稱',img)
同圖像新名稱也要帶有后綴,這個圖像新名稱所帶有的后綴,可以不同於原圖像名稱的后綴,例如如果原圖像的后綴為.png,圖像新名稱可以為.png 也可以是.jpg。
整合這三個基本內容,我們就可以進行一個最基本的程序啦
- 首先導入opencv的包
- import cv2
- 還要導入numpy包
- import numpy as np
- 開始讀入圖像吧,就拿我的檸檬來做例子吧
- img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\lemongrowup.png',0)
- 然后我們可以顯示這個圖像咯
- cv2.imshow('image',img)
- 顯示的圖像會出現一閃而過的情況,這是正常的,因為我們要設定一個函數來讓圖像一直顯示
- k = cv2.waitKey(0)&0xFF
- if k == 27:
- cv2.destroyAllWindows()
cv2.waitKey(0)&0xFF這個函數就是64位下的讓窗口一直顯示的函數啦
27是ESC的ASCII碼,這句話就是說當按下ESC的時候,關閉圖像窗口,不按
我們用
cv2.destroyAllWindows() 刪除窗口,刪除指定窗口的話就要在()內加入窗口的名稱,這個我們以后會用到。不寫這句沒關系,不過你是關不掉打開的圖像窗口的,只能結束主程序才可以關閉圖像窗口。
- 然后我們要保存圖像,
- elif k == ord('s'):
- cv2.imwrite('lemongrowupgray.jpg',img)
- cv2.destroyAllWindows()我們按下S的時候會保存
我們保存的圖像有人找不到啦,我悄悄告訴你們圖像就保存在你寫的這個程序的目錄中,例如我這個程序保存在了C:\Users\Administrator\Desktop\我的博客\opencv目錄下,保存的圖像就在C:\Users\Administrator\Desktop\我的博客\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:\Users\Administrator\Desktop\opencvimg\lemongrowup.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后圖像就保存在這