「python opencv 計算機視覺零基礎實戰」第一節

2020-12-24 1bit愛學習

前置條件

說明:本系列opencv實戰教程將從基礎到實戰,若只是簡單學習完python也可以通過該教程完成一般的機器學習編程;文中將會對很多python的基礎內容進行講解,但由於文章定位的原因將不會贅述過多的基礎內容,基礎內容進行第一次講解後第二次將不會過多贅述,本文主要講解的是opencv相關知識。

本文系統及環境:本文將在windows7作業系統下以python作為程式語言,完成對opencv的程序編寫。python版本是3.8。

一、學習目標

安裝opencv了解什麼是計算機視覺了解讀取圖片的方法了解顯示圖片的方法二、完成opencv的helloworld程序編寫

2.1 opencv是什麼

要了解opencv是什麼,首先可以看opencv的全稱——Open Source Computer Vision Library,翻譯過來為「開源的計算機系統識別庫」。那計算機視覺指的是什麼呢?

計算機視覺並不是指計算機可以去查看某些東西,這個說法太過片面,並不嚴謹;計算機視覺其實是研究如何讓計算機去代替人去觀察,並且進行一些目標上的處理。在opencv中,集成了很多方法,可以讓我們開發者很容易的完成某些視覺上的操作,完成某些目標;通過opencv,可以讓我們無需了解太多的算法知識,簡便的進行開發。

2.2 opencv可以做什麼

opencv應用廣泛,例如人臉識別、車牌識別、機器人、指紋、文字等,還可以對圖片信息進行方便的編輯,例如可以模糊圖片、檢測目標等;我們可以通過學習opencv可以做一個「檢測老闆面部自動切屏程序」、「類似於圖片摳圖等圖片操作的軟體」、「自動駕駛」等。

2.3 opencv的安裝

opencv的安裝很簡單,使用pip命令安裝即可。命令如下:

pip install opencv-python安裝完成後可以在cmd黑框框中進入python命令的交互界面,引入opencv即可知道是否已經安裝成功。步驟如下:首先輸入python進入python命令的交互界面:

隨後輸入命令import cv2,引入OpenCV庫:

若此時並未出錯,則說明opencv安裝正確。其中import表示引入,import cv2表示引入cv2這個模塊,cv2是模塊名;其中import的作用是引入。

2.4 opencv的helloworld

opencv的helloworld程序跟一般的helloworld程序不同,指讀取一張圖片並且顯示。我們打開自己的編輯器,我使用的編輯器是notepad。

opencv讀取圖片使用的是imread方法,在imread方法傳入一張圖片的路徑即可讀取到該圖片,但需要注意的是,在讀取圖片時,路徑不能出現中文、文件名最好是中文、在傳入時還需要注意斜杆會轉義,儘量的加r使文件路徑不轉義。查看以下示例:

img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')以上代碼讀取一張路徑為「C:\Users\mx\Desktop\1.jpg」的圖片,並且賦值給img變量,這是img則為改圖片對象。隨後顯示該變量內容需要先創建一個窗口,名為ImageShow,使用namedWindow方法。代碼如下:

cv2.namedWindow("Image")namedWindow接收2個參數,一個為窗口名稱,另一個為顯示方式;顯示方式包括cv.WINDOW_AUTOSIZE與*cv.WINDOW_NORMAL,默認情況下是cv.WINDOW_AUTOSIZE;默認情況下並不能改變窗口大小,若圖片太大,將會對查看造成一定的影響,使用cv.WINDOW_NORMAL則可以對窗口大小進行拖動更改,將會方便我們的查看。我們將以上代碼更改,代碼如下:

cv2.namedWindow("Image",cv.WINDOW_NORMAL)接下來我們將顯示圖像,使用imshow方法。代碼如下:

cv2.imshow("Image", img)imshow方法接收2個參數,第一個是我們需要在哪個窗口顯示的名稱,第二個是讀取後的圖片對象img。若在上一步中不創建窗口Image,在使用imshow方法時依舊可以直接顯示,此時將會創建一個當前所命名的窗口。接下來需要添加一個等待,防止程序運行完後自動關閉。代碼如下:

cv2.waitKey (0)接下來關掉窗口,調用destroyAllWindows方法,該方法將會銷毀所有創建的窗口:

cv2.destroyAllWindows()也可以使用destroyWindow方法銷毀指定的窗口,如下代碼:

cv2.destroyWindow("Image")以上完整的代碼如下:

import cv2img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#讀取cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#創建一個窗口cv2.imshow("Image", img)#顯示圖像cv2.waitKey (0)#等待關閉cv2.destroyAllWindows()#destroy運行代碼,將會出現圖片:

以上圖片左上角為title頭,是窗口名稱,並且改圖片可以拖動改變大小。我們更改imshow代碼,使其指定到一個未創建的窗口進行顯示:

import cv2img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#讀取cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#創建一個窗口cv2.imshow("Image1", img)#顯示圖像cv2.waitKey (0)#等待關閉cv2.destroyAllWindows()#destroy運行結果如下:

我們發現,這時創建了一個Image1窗口,該窗口顯示了該圖片內容,並且不能改動大小;我們使用namedWindow創建的Image窗口並沒有指定顯示內容,所以導致顯示內容無,但是可以自動改變大小,這時因為我們創建該窗口時傳入了cv2.WINDOW_NORMAL選擇了可自由改變大小。這時可通過這個小例子很好的對比cv2.WINDOW_NORMAL與cv2.WINDOW_AUTOSIZE的區別。

這時也可以改變代碼:

import cv2img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#讀取cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#創建一個窗口cv2.imshow("Image1", img)#顯示圖像cv2.destroyWindow("Image")cv2.waitKey (0)#等待關閉cv2.destroyAllWindows()#destroy以上代碼中在waitKey 之前使用了destroyWindow方法對無用的Image窗口進行了銷毀,運行時將會不再出現Image窗口。註:文章首發於ebaina,可點擊擴展連接了解

三、總結

了解了安裝opencv 的命令 pip install opencv-python了解計算機視覺是研究如何讓計算機去代替人去觀察,並且進行一些目標上的處理了解讀取圖片的方法imread了解顯示圖片的方法imshow了解窗口創建的多個模式WINDOW_NORMAL與WINDOW_AUTOSIZE了解了銷毀所有窗口的方法destroyAllWindows與銷毀指定窗口的方法destroyWindow

相關焦點

  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    本文從實踐的角度介紹了如何使用 PHP 與 OpenCV 構建人臉檢測、人臉識別、超解析度與目標檢測等系統,因此 PHP 的各位擁躉們,可以盡情使用 OpenCV 探索計算機視覺了。本文首發於公眾號機器之心(ID:almosthuman2014),部分代碼格式有誤可參閱原文章。
  • 基於opencv 的圖像處理入門教程
    前言雖然計算機視覺領域目前基本是以深度學習算法為主,但實際上很多時候對圖片的很多處理方法,並不需要採用深度學習的網絡模型,採用目前成熟的圖像處理庫即可實現,比如 OpenCV 和 PIL ,對圖片進行簡單的調整大小、裁剪、旋轉,或者是對圖片的模糊操作。
  • 零基礎學習python,這幾本書少不了
    目前,社會上已經掀起了一波學習python的熱潮,但是很多人由於並沒有python基礎,不知道從哪裡開始學習,小編今天整理了零基礎學習python的一些書籍,希望對大家有所幫助。1.《"笨辦法"學Python》推薦理由:本書是一本python入門書籍,比較適合沒有計算機、編程基礎,但是對python感興趣的小白學習使用。這本書是以習題的方式一步一步引導讀者了解、學習python,從簡單的列印一直講到完整項目的實踐,讓初學者從基礎的python知識入手,最終體驗到軟體開發的基本過程。
  • 「python學習手冊-筆記」003.數值類型
    「這不是演習!」好了,從本章開始,我們就要正式進入python的學習.所涉及的內容深度會有所提升,但是還到不了學習完1+1=2之後就開始微積分推導的陡峭程度. 相關的補充內容我會以知識點補充或者外鏈的方式添加進來.
  • 零基礎如何學習python
    雖然說Python比起其他幾大程式語言易學,但是零基礎沒有合理的學習路線學起來也會有些難度的。沒有合理的學習路線會導致你在浪費時間,使得對Python失去興趣,學習不到重點,下面給大家整理出來了Python零基礎的學習路線,希望能幫助到大家。
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 零基礎學習編程 難不難
    本網10月23日訊 信息技術時代,編程將會成為了一種必備的技能,它能解決很多工作中複雜繁瑣的程序,懂得一些編程會讓你擁有超能力一般,於是很多人都對編程產生了興趣,那麼零基礎學習編程難不難呢?
  • 「石田スイ展」第一彈主視覺圖公開
    「石田スイ展」第一彈主視覺圖公開 動漫 178動漫整編 ▪ 2020-12
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?前些天我弟弟突然聊天,推薦我學python,我把聊天截圖給了學計算機的楊先生。楊先生的解釋:python和C語言、java一樣是一門程式語言。學會了或許可以三分鐘做好excel的數據分析。但是,為了寫這個三分鐘的程序,你可能要花一個星期的時間。
  • 藉助Streamlit框架,可僅使用Python代碼來構建基於瀏覽器的UI
    每當用戶與簡化的應用程式進行交互時,python腳本就會從頭到尾重新運行,這是在考慮應用程式的不同狀態時要記住的重要概念。使用pip安裝Streamlit:Pip install streamlit並在python腳本上運行streamlit:Streamlit run app.py使用例子
  • 「九章」量子計算機糾纏了嗎?
    「九章」量子計算機問鼎世界「量子霸權」,它比世界霸主谷歌的「懸鈴木」快一百億倍!這無疑是2020年中國科學界頭條新聞。請指教,「九章」團隊是如何利用自己完全不懂的一個假設,成功製造出世界最厲害的量子計算機?你們又是如何利用沒有數學表達式的量子糾纏進行糾纏計算?質疑五:「九章」是計算機嗎?
  • 零基礎學習Python難不難?
    Python是一種面向對象、解釋型電腦程式設計語言,它常被暱稱為膠水語言,它能夠很輕鬆的把用其他語言製作的各種模塊(尤其是C/C++)輕鬆地聯結在一起。常見的一種應用情形是,使用python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫。比如3D遊戲中的圖形渲染模塊,速度要求非常高,就可以用C++重寫。至於學習Python難不難,其實不會難,代碼少而且簡單粗暴,至於上手快慢這個就因人而異。
  • 動畫「B-PROJECT」最新視覺圖、PV第一彈公開~
    動畫「B-PROJECT」最新視覺圖、PV第一彈公開~ 新聞 178動漫原創 ▪ 2018-11-28 12:49:55
  • 「世界第一初戀~求婚篇~」四對情侶視覺圖及PV公開
    「世界第一初戀~求婚篇~」四對情侶視覺圖及PV公開 動漫 178動漫原創 ▪ 2019-12-26 09:00:00
  • 「銀河英雄傳說Die Neue These」新視覺圖解禁,4.6登陸NHK放送
    「銀河英雄傳說Die Neue These」新視覺圖解禁,4.6登陸NHK放送 動漫 178動漫原創 ▪
  • 零基礎可以學習計算機編程嗎
    很多朋友想學習計算機主要是因為薪水高,但是又害怕零基礎,擔心學習不到,甚至很多朋友不知道電腦是什麼,未來的工作內容是什麼,只知道玩電腦等於高薪,對於每天忙碌的夥伴來說,考慮一下自己的職業規劃,考慮一下自己的興趣,是否真的想進入電腦it行業,並且了解零基礎應該如何選擇IT。
  • 「視覺+X」時代,一起探尋下一個殺手級應用丨CCF-GAIR 2020
    如果說人工智慧是第四次工業革命的驅動力,計算機視覺則最有可能衍生出這次工業革命中的殺手級應用。「計算機視覺是機器智能和企業變革最重要的元素之一。」美國史丹福大學計算機科學系教授李飛飛曾說,過去十年間,人類在對象識別和圖像標註等基礎視覺領域取得了重大進展。而視覺智能的下一個階段,可以稱之為:「視覺+X」時代。換句話說,日常生活、企業變革將建立在計算機視覺與機器學習等領域相結合的基礎之上。