【計算機視覺處理一】OpenCV入門

2021-03-02 Python數據分析實例

1、什麼是OpenCV?

OpenCV是一個跨平臺且開源的計算機視覺和機器學習庫,全稱Open Source Computer Vision Library 。由Intel公司開源。其中主體庫的代碼是Intel用C/C++編寫的,部分貢獻庫代碼由社區程式設計師提供。

OpenCV不僅支持多個平臺,同時還提供了多種語言的接口,包括Java、Python、Ruby等。本次課程使用的Python語言。

詳細內容可以查看OpenCV的官網:https://opencv.org/。

2、OpenCV能做什麼?

OpenCV中實現了了很多計算機視覺算法,包括基本的圖片運算、閾值處理、圖像濾波、形態學操作等。除此之外,OpenCV還提供了級聯分類器可以用於人臉檢測。

不僅是圖片,OpenCV同時提供了視頻處理相關的操作,下面我們來看看一些案例。

(1)邊緣檢測

邊緣檢測的算法有很多,其中Canny算法是當前最優算法,下面圖片就是使用Canny算法實現的邊緣檢測:

可以看到手機的邊緣被完整的展現出來了。對於人像或者其它複雜的圖片Canny也有比較好的表現,下面是人像的邊緣檢測圖:

可以看到手機的邊緣被完整的展現出來了。對於人像或者其它複雜的圖片Canny也有比較好的表現,下面是人像的邊緣檢測圖:

(2)人臉檢測

在OpenCV的官網提供了人臉的特徵文件,我們可以使用Haar級聯分類器快速實現人臉檢測的操作,下面是使用OpenCV實現的人臉檢測:

檢測效果還是比較不錯的。

(3)圖像腐蝕

腐蝕是最基本的形態學操作之一,我們可以通過腐蝕操作來消除圖片中的一些細小的裂縫,比如下面就是簡單的腐蝕操作的例子:

除了上面這些,OpenCV還要許多其它操作,在後續的文章中會陸續介紹到,下面我們在Python中來安裝一下OpenCV。

3、在Python中安裝OpenCV

在Python中想要使用OpenCV非常簡單,我們只需要使用pip安裝一個模塊就好了,語句如下:

pip install opencv-python

上面安裝的就是OpenCV的主體庫,也就是Intel公司提供的。我們可以通過下面語句安裝貢獻庫:

pip install opencv-contrib-python

不安裝貢獻庫不影響我們使用主體庫的基本功能。

在Python文件中,我們通過下面語句導入OpenCV:

導入後我們就可以使用它了。

4、圖片的讀取

讀取圖片的函數格式如下:

retval = cv2.imread(filename, flags=None)

現階段我們可以把retval簡單理解為圖片對象。至於flags常用的值可以看下表:

值含義cv2.IMREAD_UNCHANGED格式不變cv2.IMREAD_GRAYSCALE灰度圖cv2.IMREAD_COLOR3通道BGR圖,flags的默認值

暫時我們不需要理解各個參數的含義,現階段我們不會使用flags參數。下面我們使用imread函數讀取一張圖片:

import cv2retval = cv2.imread('im.jpg')

上面就是讀取圖片的操作了。

5、顯示圖片

讀取圖片是最基本的操作,後續的圖像操作都需要先獲取圖片對象,比如接下來要說的顯示圖片。

顯示圖片的操作通常伴隨著等待和銷毀,這麼說你可能不理解,下面我們來看顯示圖片的代碼:

import cv2im = cv2.imread('im.jpg')# 顯示圖片cv2.imshow(im, 'im')cv2.waitKey(0)cv2.destroyAllWindows()

上面起主要作用的是imshow函數,它的函數格式如下:

參數的解釋如下:

•winname:顯示圖片的窗口的名稱•mat:圖片對象,就是我們通過imread獲取的圖片對象。

我們可以調用imshow函數顯示圖片,但imshow函數只會為我們顯示一瞬間。我們看到的效果也就是一閃而過的窗口,因此需要配合我們的waitKey函數。waitKey的函數格式如下:

key = waitKey(delay=None)

它的作用是等待用戶輸入,它會返回一個鍵盤的ASCII值。配合waitKey函數我們就能讓窗口顯示。

其中delay參數的函數是等待的毫秒數。我們可以選擇不給或者給0,這就表示一直等待。

至於destroyAllWindows函數則是一個常規操作,因為OpenCV是由C/C++編寫的,所以我們需要手動回收窗口的內存。

相關焦點

  • OpenCV 強大的開源計算機視覺庫
    計算機視覺是人工智慧的一個交叉領域,意圖賦予計算機和其它具有計算能力的電子設備高層次的對圖像和視頻的理解能力。
  • 入門計算機視覺OpenCV
    同濟子豪兄6節課帶你掌握OpenCV下拉文末,加入課程交流群 計算機視覺顧名思義就是讓計算機或者其他電子設備具有類似人類的視覺系統,可以通過採集的圖片或視頻進行處理,從而獲得場景或事物的三維信息,並進行識別判斷。
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 「python opencv 計算機視覺零基礎實戰」第一節
    一、學習目標安裝opencv了解什麼是計算機視覺了解讀取圖片的方法了解顯示圖片的方法二、完成opencv的helloworld程序編寫2.1 opencv是什麼要了解opencv是什麼,首先可以看opencv的全稱——Open Source Computer Vision Library,翻譯過來為「開源的計算機系統識別庫」。
  • Python 圖像處理 OpenCV (1):入門
    引言又開一個新的系列分享,對圖像處理感興趣的同學可以關注這個系列。更新頻率儘量保持一周兩到三次推送。
  • [Python圖像處理] 一.圖像處理基礎知識及OpenCV入門函數
    - https://blog.csdn.net/eastmount一.圖像基礎知識數字圖像處理(Digital Image Processing)又稱為計算機圖像處理(Computer Image Processing),旨在將圖像信號轉換成數位訊號並利用計算機對其進行處理的過程。其運用領域如下圖所示,涉及通信、生物醫學、物理化學、經濟等。
  • 【OpenCV入門之十三】如何在ROI中添加Logo
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺,小白準備了【OpenCV入門】系列。
  • OpenCV能做哪些好玩的項目?適合初學者學習的五個計算機視覺項目
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成 ,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。自 2000 年第一個開源版本發布以來,受到了很多計算機視覺領域開發者的喜愛,也不斷有開發者投身計算機視覺領域中,今天 Gitee 推薦的開源項目就是為 OpenCV 初學者們準備的,一起來看看吧。
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • OpenCV+Python計算機視覺導學——目錄匯總
    本文引用地址:http://www.eepw.com.cn/article/202007/415159.htmOpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺和機器學習軟體庫,使用它,我們可以完成對數字圖像的一系列處理工作,從而進一步設計圖像識別類的運用,比如停車場的車牌號碼識別,馬路上的道路交通標識識別,物品識別,人臉識別等機器視覺領域
  • 【OpenCV入門十七講】形態學操作
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺
  • 經驗貼 | 深度學習(計算機視覺方向)小白入門的一些建議
    我記得最開始的時候老師讓我使用matlab,然後去學校的二手書店買了岡薩雷斯的數字圖像處理和數字圖像處理(matlab)版,簡單讀了一下,裡面有很多公式和理論的東西。然後我用matlab簡單實現了一下裡面的一些基本操作,比如說圖片的輸入輸出,邊緣檢測,二值化,腐蝕膨脹等一些傳統的處理手段,雖然現在深度學習用的不是很多,但是有時候一些情況還是需要使用的,而且對於處理圖像的我們來說,多多少少還是需要知道一些的,以後寫論文的時候也會用到去畫圖。
  • 基於 opencv 的圖像處理入門教程
    雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。
  • 【視覺與圖像】Python+OpenCV教程入門篇
    然而Python還有個重要的特性:它是一門膠水語言!Python可以很容易地擴展C/C++。OpenCV-Python就是用Python包裝了C++的實現,背後實際就是C++的代碼在跑,所以代碼的運行速度跟原生C/C++速度一樣快。
  • OpenCV入門及應用案例:手把手教你做DNN圖像分類
    導讀:本文將介紹OpenCV的源碼結構、OpenCV深度學習應用的典型流程,以及深度學習和OpenCV DNN(Deep Neural Networks,深度神經網絡)模塊的背景知識,讓讀者可以快速認識OpenCV,消除神秘感,同時對計算機視覺從傳統算法到深度學習算法的演進歷史有所了解
  • 【走進OpenCV】學習Opencv不得不掌握的操作
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺,小白準備了【走進OpenCV】系列,主要幫助小夥伴了解如何調用OpenCV
  • 不知道這 7 大 OpenCV 函數怎麼向計算機視覺專家進階?
    作者 | Lazar Gugleta譯者 | Arvin,責編 | 夕顏頭圖 | CSDN付費下載自視覺中國計算機視覺和計算機圖形學現在非常流行,因為它們與人工智慧息息相關,它們主要的共同點是使用同一個OpenCV庫,以理解數字圖像或視頻(CV)或生成圖像(CG)中深層含義。
  • 給OpenCV初學者的禮物——OpenCV人臉檢測入門教程
    前言OpenCV是一種經常被用到的計算機視覺庫這對習慣中文閱讀的國內計算機愛好者來說並不是太友好,特別是對那些還沒受過高等教育但對計算機科學抱有美好嚮往的普通大眾。誠然,英文閱讀對於業內的大牛們來說並不會帶來什麼障礙。但是我們慄子社區是要走群眾路線的。大牛們雖然技術水平高,但是能力越大責任越大,他們並不能天天來社區陪大家吹水。