最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于Python的Opencv入門教程(P2.項目結(jié)構(gòu)的最后搭建以及實現(xiàn)顯示圖片)

2022-01-01 16:23 作者:閑予1217  | 我要投稿


書接上回(doge)

搭建OpenCV項目結(jié)構(gòu)

在進入正式敲代碼前,我們先把我們所需的圖片下載下來。

下載到與你的python項目同一個文件夾里(圖片必須在與代碼文件的同級目錄)

在本教程中,我們將創(chuàng)建兩個Python腳本來幫助您學(xué)習(xí)OpenCV基礎(chǔ)知識:

我們的第一個腳本,opencv_教程_01。py將使用電影《羞羞的鐵拳》(ShengTeng.png)中的圖像介紹基本的圖像處理操作。

從這里開始,opencv_教程_02。py將向您展示如何使用這些圖像處理構(gòu)建塊來創(chuàng)建OpenCV應(yīng)用程序,以計算俄羅斯方塊圖像(tetris_blocks.png)中對象的數(shù)量。

完成以上步驟,我們的項目環(huán)境以及結(jié)構(gòu)就基本完成了!(終于要敲代碼了)

加載和顯示圖像信息

使用Python學(xué)習(xí)OpenCV基礎(chǔ)知識始于加載和顯示圖像——這是一個只需要幾行代碼的簡單過程。

讓我們首先打開opencv_教程_01。在Pycharm的空白項目中先復(fù)制上以下代碼:

在第3行和第4行中,我們同時導(dǎo)入imutils和CV2。CV2包是OpenCV(就是本文用于打開圖片的包庫);imutils包是一系列的便利函數(shù)。

現(xiàn)在,通過導(dǎo)入,我們已經(jīng)擁有了所需的軟件,讓我們將圖像加載并顯示出來。

要加載我們的羞羞的鐵拳的圖片,我們稱之為CV2.imread(“jp.png”)。如第7行所示,我們將結(jié)果分配給圖像。我們的圖像實際上只是一個NumPy列表。

在本腳本的后面,我們將需要高度和寬度。所以在第8行,我稱之為image.shape以提取高度、寬度和深度。

高度先于寬度似乎令人困惑,但請這樣想:

  • 我們用行的#x列#來描述矩陣

  • 行數(shù)是我們的高度

  • 列數(shù)就是我們的寬度

因此,表示為NumPy列表的圖像的尺寸實際上表示為(高度、寬度、深度)。

深度是頻道數(shù)-在我們的例子中,這是三個,因為我們使用三個顏色通道:藍色、綠色和紅色。


第10行顯示的打印命令將向終端輸出值:

為了使用OpenCV在屏幕上顯示圖像,我們使用CV2。第12行的CV2.imshow("Image",?image)。下一行等待按鍵(第13行)。這一點很重要,否則圖像的顯示和消失速度甚至比我們看到圖像的速度還要快。

注意:您需要實際單擊OpenCV打開的活動窗口,然后按鍵盤上的鍵來推進腳本。OpenCV無法監(jiān)控終端的輸入,因此,如果您在終端中按下一個鍵,OpenCV將不會注意到。同樣,您需要單擊屏幕上活動的OpenCV窗口,然后按鍵盤上的一個鍵。

訪問單個像素

頂部:灰度梯度,其中較亮的像素接近255,較暗的像素接近0。底部:RGB維恩圖,其中較亮的像素更靠近中心。

首先,你可能會問:

什么是像素?

所有圖像都由像素組成,像素是圖像的原始構(gòu)建塊。圖像由網(wǎng)格中的像素組成。640 x 480圖像有1226列(寬度)和866行(高度)。具有這些尺寸的圖像中有1226*866=1061716像素。

灰度圖像中的每個像素都有一個表示灰度陰影的值。在OpenCV中,有256種灰度-從0到255。因此,灰度圖像將具有與每個像素相關(guān)聯(lián)的灰度值。

彩色圖像中的像素具有附加信息。在了解圖像處理后,您很快就會熟悉幾種顏色空間。為了簡單起見,我們只考慮RGB顏色空間。

在OpenCV中,RGB(紅、綠、藍)顏色空間中的彩色圖像具有與每個像素相關(guān)聯(lián)的三元組:(B、G、R)。

請注意,排序是BGR而不是RGB。這是因為當OpenCV在許多年前首次開發(fā)時,標準是BGR訂購。多年來,該標準現(xiàn)已成為RGB,但OpenCV仍保持這種“傳統(tǒng)”BGR排序,以確保沒有現(xiàn)有的代碼中斷。

BGR 3元組中的每個值的范圍為[0~255]。OpenCV中RGB圖像中的每個像素有多少種顏色?這很簡單:256*256*256=16777216。

現(xiàn)在我們已經(jīng)確切地知道像素是什么,讓我們看看如何檢索圖像中單個像素的值:

如上所示,我們的圖像尺寸是寬度=1226,高度=866,深度=3。我們可以通過指定坐標來訪問數(shù)組中的單個像素值,只要它們在最大寬度和高度范圍內(nèi)。

代碼image[100,50]從位于x=50和y=100的像素中產(chǎn)生一個3元組的BGR值(同樣,請記住,高度是行數(shù),寬度是列數(shù)-現(xiàn)在請花一秒鐘時間讓自己相信這是真的)。如上所述,OpenCV以BGR順序存儲圖像(例如,與Matplotlib不同)。查看為第16行的像素提取顏色通道值有多簡單。

結(jié)果像素值顯示在終端上:

備注

  1. 函數(shù):每種編程語言中,都需要函數(shù)的參與,python同樣也不例外。函數(shù)是集成的子程序,是算法實現(xiàn)的最小方法單位,是完成基本操作的手段的集合。編程中能夠靈活應(yīng)用函數(shù),提高程序設(shè)計的簡單化;實現(xiàn)代碼應(yīng)用的復(fù)用化;提升代碼閱讀的清晰化;加強代碼開發(fā)的強健化;加快代碼開發(fā)的效率化;增強團隊開發(fā)的便利化;降低程序理解的復(fù)雜化;減少代碼存儲的減少化??傊?,函數(shù)就是為實現(xiàn)功能或操作的獨立功能塊,可以返回也可以不返回值,可以返回一個值,可以返回多個值等。


基于Python的Opencv入門教程(P2.項目結(jié)構(gòu)的最后搭建以及實現(xiàn)顯示圖片)的評論 (共 條)

分享到微博請遵守國家法律
额济纳旗| 静海县| 聂荣县| 新巴尔虎左旗| 芷江| 含山县| 牡丹江市| 乌苏市| 全州县| 阳江市| 武汉市| 陕西省| 闵行区| 沁源县| 舒兰市| 南通市| 廊坊市| 泰安市| 新建县| 永泰县| 青岛市| 徐州市| 双桥区| 惠州市| 鄯善县| 乌鲁木齐市| 湖南省| 甘南县| 宝清县| 锡林郭勒盟| 壤塘县| 长岛县| 新民市| 旌德县| 乐都县| 兖州市| 毕节市| 扎鲁特旗| 阿坝县| 筠连县| 巩留县|