為什麼使用Python-OpenCV
雖然python 很強大,而且也有自己的影像處理庫PIL,但是相對於OpenCV 來講,它還是弱小很多。跟很多開源軟體一樣OpenCV 也提供了完善的python 介面,非常便於調用。OpenCV 的穩定版是2.4.8,最新版是3.0,包含了超過2500 個演算法和函數,幾乎任何一個能想到的成熟演算法都可以通過調用OpenCV 的函數來實現,超級方便。 一、需要工具
本機使用python 2.7.10下調試代碼均通過,一下學習需要有一定的代碼閱讀能力,一下學習只介紹函數方法:
Python 作為一種高效簡潔的直譯式語言非常適合我們用來解決日常工作的問題。而且它簡單易學,初學者幾個小時就可以基本入門。再加上Numpy 和matplotlib 這兩個翅膀,Python 對資料分析的能力不遜於Matlab。Python 還被稱為是膠水語言,有很多軟體都提供了Python 介面。尤其是在linux 下,可以使用Python 將不同的軟體組成一個工作流程,發揮每一個軟體自己最大的優勢從而完成一個複雜的任務。比如我們可以使用Mysql 儲存資料,使用R 分析資料,使用matplotlib 展示資料,使用OpenGL 進行3D 建模,使用Qt 構建漂亮的GUI。而Python 可以將他們聯合在一起構建一個強大的工作流程。 二、入門小試
1、映像讀入:cv2.imread()
使用函數cv2.imread() 讀入映像。這幅映像應該在此程式的工作路徑,或者給函數提供完整路徑,第二個參數是要告訴函數應該如何讀取這幅圖片。
• cv2.IMREAD_COLOR:讀入一副彩色映像。映像的透明度會被忽略,
這是預設參數。
• cv2.IMREAD_GRAYSCALE:以灰階模式讀入映像
# -*- coding: utf-8 -*-"""Created on Mon Sep 07 19:51:58 2015@author: Eddy_zheng"""import cv2#import numpy as np# 灰階圖模式載入一副彩圖img = cv2.imread('lena.jpg',0) #沒有女神lena的,下方可以自行儲存 @_@
PS:調用opencv,就算映像的路徑是錯的,OpenCV 也不會提醒你的,但是當你使用命
令print img時得到的結果是None。
2、顯示映像cv2.imshow()
使用函數cv2.imshow() 顯示映像。視窗會自動調整為映像大小。第一個參數是視窗的名字,其次才是我們的映像。你可以建立多個視窗,只要你喜歡,但是必須給他們不同的名字。
cv2.imshow('image',img)cv2.waitKey(0) """cv2.waitKey() 是一個鍵盤綁定函數。需要指出的是它的時間尺度是毫秒級。函數等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,如果按下任意鍵,這個函數會返回按鍵的ASCII 碼值,程式將會繼續運行。如果沒有鍵盤輸入,傳回值為-1,如果我們設定這個函數的參數為0,那它將會無限期的等待鍵盤輸入。它也可以被用來檢測特定鍵是否被按下,例如按鍵a 是否被按下,這個後面我們會接著討論。"""cv2.destroyAllWindows()"""cv2.destroyAllWindows() 可以輕易刪除任何我們建立的視窗。如果你想刪除特定的視窗可以使用cv2.destroyWindow(),在括弧內輸入你想刪除的視窗名。"""
3、儲存映像cv2.imwrite()
cv2.imwrite('lena.png',img)
lena: