天天看點

樹莓派python人臉識别_樹莓派opencv python 人臉識别 圖像加載

首先,在圖像和視訊分析方面,我們應該了解一些基本的假設和範例。用今天幾乎所有錄影機的記錄方式來說,記錄實際上都是幀,每秒顯示30-60次,一次又一次顯示。但是,它們的核心是靜态幀,就像圖像一樣。是以,圖像識别和視訊分析大部分使用相同的方法。諸如定向跟蹤之類的某些事情将需要一連串的圖像(幀),但是諸如面部檢測或物體識别之類的事情可以用幾乎與圖像和視訊上完全相同的代碼來完成。

接下來,許多圖像和視訊分析歸結為盡可能簡化源。這幾乎總是從轉換為灰階開始的,但是也可以是濾色器,漸變或它們的組合。從這裡,我們可以對源進行各種分析和轉換。通常,最後要完成的工作是先進行轉換,然後進行分析,然後将要應用的所有疊加層都應用回原始源,這就是為什麼您經常可以看到物體或面部識别的“成品”的原因在全彩圖像或視訊上顯示。但是,很少像這樣以原始形式實際處理資料。我們可以在基本層面上做的一些例子。所有這些都是通過基本的網絡攝像頭完成的,沒什麼特别的:

在邊緣檢測的情況下,黑色對應于像素值(0,0,0),而白線對應于(255,255,255)。視訊中的每個圖檔和幀都按這種方式分解為像素,就像邊緣檢測一樣,我們可以推斷出邊緣是基于白色像素與黑色之間的比較。然後,如果要檢視帶有标記邊緣的原始圖像,請注意所有白色像素的坐标位置,然後在原始源Feed圖像或視訊上标記這些位置。

在本教程結束時,您将能夠完成上述所有操作,并且能夠訓練您的機器以識别所需的任何對象。就像我最初說的那樣,第一步通常是轉換為灰階。在此之前,我們需要加載圖像。是以,讓我們開始吧!在整個教程中,我強烈建議您使用自己的資料進行處理。如果您有網絡攝像頭,請一定要使用它,否則請找到您認為很有趣的圖像。如果您遇到麻煩,請參考以下圖檔:

import cv2

import numpy as np

from matplotlib import pyplot as plt

img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE)

cv2.imshow('image',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

首先,我們要導入一些東西,我都安裝了這三個子產品。接下來,我們将img定義為cv2.read(圖像檔案,parms)。預設值parms為IMREAD_COLOR,它是沒有任何Alpha通道的顔色。如果您不熟悉,則alpha是不透明的程度(與透明度相反)。如果需要保留Alpha通道,也可以使用IMREAD_UNCHANGED。很多時候,您将閱讀彩色版本,然後将其轉換為灰色。如果您沒有網絡攝像頭,這将是您在本教程中使用的主要方法,即加載圖像。

除了使用IMREAD_COLOR ...等,您還可以使用簡單的數字。您應該熟悉這兩種選擇,進而了解該人在做什麼。對于第二個參數,可以使用-1、0或1。顔色是1,灰階是0,而不變是-1。是以,對于灰階,可以做到img = cv2.imread('watch.jpg', 0)

加載後,我們使用cv2.imshow(title,image)來顯示圖像。從這裡開始,我們使用cv2.waitKey(0)等待直到按下任何鍵。完成後,我們使用cv2.destroyAllWindows()關閉所有内容。

如前所述,您還可以使用Matplotlib顯示圖像,下面是一些有關如何執行此操作的代碼:

加載後,我們使用cv2.imshow(title,image)來顯示圖像。從這裡開始,我們使用cv2.waitKey(0)等待直到按下任何鍵。完成後,我們使用cv2.destroyAllWindows()關閉所有内容。

如前所述,您還可以使用Matplotlib顯示圖像,下面是一些有關如何執行此操作的代碼:

import cv2

import numpy as np

from matplotlib import pyplot as plt

img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE)

plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')

plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis

plt.plot([200,300,400],[100,200,300],'c', linewidth=5)

plt.show()

請注意,您可以像在任何其他Matplotlib圖中一樣或可以使用像素位置作為坐标來繪制線。但是,如果您希望在圖像上繪畫,則不需要Matplotlib。OpenCV為此提供了很好的方法。完成修改後,可以儲存,如下所示:

cv2.imwrite('watchgray.png',img)