計算機視覺處理1】OpenCV入門

      網友投稿 968 2022-05-29

      OpenCV入門

      1、什么是OpenCV?

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

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

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

      2、OpenCV能做什么?

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

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

      (1)邊緣檢測

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

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

      (2)人臉檢測

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

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

      (3)圖像腐蝕

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

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

      3、在Python中安裝OpenCV

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

      pip install opencv-python

      1

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

      pip install opencv-contrib-python

      1

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

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

      import cv2

      1

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

      4、圖片的讀取

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

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

      1

      retval:返回的圖片對象(numpy.ndarray類型),如果讀取失敗返回None。

      filename:文件名稱,為必選參數。

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

      flags:讀取標記,用來控制文件讀取的類型,我們可以選擇不給它傳值。

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

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

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

      1

      2

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

      5、顯示圖片

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

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

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

      1

      2

      3

      4

      5

      6

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

      imshow(winname, mat)

      1

      參數的解釋如下:

      winname:顯示圖片的窗口的名稱

      mat:圖片對象,就是我們通過imread獲取的圖片對象。

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

      key = waitKey(delay=None)

      1

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

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

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

      OpenCV

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:深入剖析Kubernetes系列連載(三)隔離技術Namespace
      下一篇:移動端開發框架分析
      相關文章
      久久久久亚洲精品无码系列| 亚洲av中文无码乱人伦在线r▽| 亚洲国产精品一区二区久久hs| 在线观看免费亚洲| 亚洲a∨无码一区二区| 亚洲夂夂婷婷色拍WW47 | 亚洲www在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲香蕉久久一区二区三区四区| 亚洲午夜电影在线观看高清| 亚洲av无码国产综合专区| 亚洲伊人久久精品| 亚洲一级特黄特黄的大片| 亚洲人成日本在线观看| 亚洲午夜电影一区二区三区| 亚洲AV综合色区无码二区偷拍| 久久精品国产亚洲AV忘忧草18| 亚洲成年网站在线观看| 亚洲国产欧美日韩精品一区二区三区| 亚洲精品成a人在线观看☆| 无码天堂va亚洲va在线va| 亚洲成人高清在线| 国产亚洲精品精品国产亚洲综合 | 亚洲综合久久综合激情久久| 4444亚洲国产成人精品| 亚洲免费闲人蜜桃| 亚洲日韩精品无码专区| 亚洲Av无码国产情品久久| 国产av无码专区亚洲国产精品| 中文字幕精品亚洲无线码一区| 亚洲AV无码一区二区三区DV| 日韩精品亚洲人成在线观看| 91亚洲国产成人久久精品| 亚洲日日做天天做日日谢| 午夜亚洲国产理论片二级港台二级| 国产精品亚洲小说专区| 自拍偷自拍亚洲精品第1页| 亚洲AV福利天堂一区二区三| 亚洲特级aaaaaa毛片| 亚洲欧洲AV无码专区| 亚洲高清成人一区二区三区|