Opencv 初探 常用API


一、介紹
- OpenCV是計算機視覺領域應用最廣泛的開源工具包,基於C/C++,支持Linux/Windows/MacOS/Android/iOS,並提供了Python,Matlab和Java等語言的接口,因為其豐富的接口,優秀的性能和商業友好的使用許可,不管是學術界還是業界中都非常受歡迎。OpenCV最早源於Intel公司1998年的一個研究項目,當時在Intel從事計算機視覺的工程師蓋瑞·布拉德斯基(Gary Bradski)訪問一些大學和研究組時發現學生之間實現計算機視覺算法用的都是各自實驗室里的內部代碼或者庫,這樣新來實驗室的學生就能基於前人寫的基本函數快速上手進行研究。於是OpenCV旨在提供一個用於計算機視覺的科研和商業應用的高性能通用庫。 - 和Python一樣,當前的OpenCV也有兩個大版本,OpenCV2和OpenCV3。相比OpenCV2,OpenCV3提供了更強的功能和更多方便的特性。
  1. core:核心模塊,主要包含了OpenCV中最基本的結構(矩陣,點線和形狀等),以及相關的基礎運算/操作。
  2. imgproc:圖像處理模塊,包含和圖像相關的基礎功能(濾波,梯度,改變大小等),以及一些衍生的高級功能(圖像分割,直方圖,形態分析和邊緣/直線提取等)。
  3. highgui:提供了用戶界面和文件讀取的基本函數,比如圖像顯示窗口的生成和控制,圖像/視頻文件的IO等。
  • video:用於視頻分析的常用功能,比如光流法(Optical Flow)和目標跟蹤等。
  • calib3d:三維重建,立體視覺和相機標定等的相關功能。
  • features2d:二維特征相關的功能,主要是一些不受專利保護的,商業友好的特征點檢測和匹配等功能,比如ORB特征。
  • object:目標檢測模塊,包含級聯分類和Latent SVM
  • ml:機器學習算法模塊,包含一些視覺中最常用的傳統機器學習算法。
  • flann:最近鄰算法庫,Fast Library for Approximate
  • Nearest Neighbors,用於在多維空間進行聚類和檢索,經常和關鍵點匹配搭配使用。
  • gpu:包含了一些gpu加速的接口,底層的加速是CUDA實現。
  • photo:計算攝像學(Computational Photography)相關的接口,當然這只是個名字,其實只有圖像修復和降噪而已。
  • stitching:圖像拼接模塊,有了它可以自己生成全景照片。
  • nonfree:受到專利保護的一些算法,其實就是SIFT和SURF。
  • contrib:一些實驗性質的算法,考慮在未來版本中加入的。
  • legacy:字面是遺產,意思就是廢棄的一些接口,保留是考慮到向下兼容。
  • ocl:利用OpenCL並行加速的一些接口。
  • superres:超分辨率模塊,其實就是BTV-L1(Biliteral Total Variation – L1
  • regularization)算法
  • viz:基礎的3D渲染模塊,其實底層就是著名的3D工具包VTK(Visualization Toolkit)。
二、常用接口
  1. 讀取:
    cv2.imread(文件名,標記)讀入圖像,
    cv2.IMREAD_COLOR():讀入彩色圖像
    cv2.IMREAD_GRAYSCALE():以灰度模式讀入圖像
     
    import cv2
    import numpy as np
    img = cv2.imread('45.jpg',0)

  2. 建立窗口:第一個窗口名稱,第二參數窗口標識
    cv2.namedWindow('WindowName', cv2.WINDOW_NORMAL)
    WINDOW_AUTOSIZE 窗口大小自動適應圖片大小,並且不可手動更改。(默認模式)
    WINDOW_NORMAL 用戶可以改變這個窗口大小
    WINDOW_OPENGL 窗口創建的時候會支持OpenGL

  3. 顯示:
    cv2.imshow()顯示圖像,
    cv2.waitKey()等待鍵盤輸入,為毫秒級

  4. 銷毀窗口: 刪除建立的全部窗口,括號內輸入想刪除的窗口名
    cv2.destroyAllWindows()

  5. 使用:
    cv2.namedWindow('WindowName',cv2.WINDOW_NORMAL)
    img = cv2.imread('xx.jpg',0)
    cv2.imshow('WindowName',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

  6. 保存圖像:
    cv2.imwrite('圖片名.png',圖片對象)
    img = cv2.imread('xx.jpg',0)
    cv2.imwrite('17.png',img)

  7. 監聽鍵盤輸入:cv2.waitKey(0)
    參數0表示永久監聽,單位為毫秒
    指定監聽時間內無鍵盤輸入默認返回值為255,否則返回按下按鍵的ASCII值
    32位系統:keyValue=cv2.waitKey(sec)
    64位系統:keyValue=cv2.waitKey(sec) & oxff


免責聲明!

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



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