新鮮和有經驗的 10 大令人興奮的 OpenCV 項目創意和主題 [2022]

已發表: 2021-05-27

OpenCV 或開源計算機視覺庫是一個強大的機器學習和基於人工智能的庫,用於開發和解決計算機視覺問題。 計算機視覺包括訓練計算機理解和理解視覺世界、識別元素並使用深度學習模型對其做出響應。 當今世界各地的企業都在圖像處理、處理、面部檢測、語音識別、運動跟踪和對象檢測中利用它。

谷歌、Facebook、微軟和英特爾等公司已經部署 OpenCV 來開發計算機視覺應用程序。 馬克·扎克伯格在2015 年的一次採訪中說:“如果我們能夠製造出能夠理解圖像中的內容並告訴盲人否則無法看到該圖像的計算機,那也將是非常了不起的。”

如今,OpenCV 技術已被證明是盲人或視障人士的一項突破。 它使他們能夠熟悉陌生的環境並識別附近的物體和人,以克服這種視力障礙。 計算機視覺也是自動駕駛汽車和智能運動傳感器設備背後的技術。

如果您正在關注計算機視覺領域的職業,這裡有十個有趣的開放式簡歷項目,可幫助您獲得真實世界的經驗。 那麼,讓我們開始吧!

目錄

2022 年要簽出的 10 大開放式 CV 項目

項目 1:使用 EdgeML 檢測肺炎

這個 OpenCV 項目旨在在您的 Raspberry Pi 上部署基於 AI 的肺炎檢測軟件。 它使用邊緣機器學習系統,使用 Balena 的多容器將帶攝像頭的 Raspberry Pi 轉換為肺炎分類器。

第二個容器被添加到 Balena,它在 Node.js 服務器中運行 Edge Impulse WebAssembly 推理引擎。 兩個容器都通過 WebSockets 進行通信,以使 BalenaCam 能夠在網頁上實時流式傳輸來自攝像頭的每一秒提要。

該項目使用的軟件和工具包括 OpenCV、Edge Impulse Studio、TensorFlow Lite、GitHub Desktop、balenaCloud、Microsoft VS Code 和 Docker。 支持 Balena Cam 的 Web 瀏覽器有 Chrome、Safari、Firefox 和 Edge。

您可以在此處查看該項目

項目 2:三星 SmartThings 的 OpenCV 供電運動傳感器

首先,您需要一個 Raspberry Pi 3 和一個之前安裝了 OpenCV 的工作 PiCam。 該項目旨在為基於計算機視覺的 SmartThings 創建一個自定義運動傳感器並檢測人臉。 收集的數據通過 LAN - UPnP 發送到 SmartThings。

為此,我們為 SmartThings 創建一個設備處理程序並對其進行編程。 然後,我們使用 Python 腳本訪問攝像頭圖像並檢測人臉,並與 SmartThings 發現的 Raspberry Pi 配對。 您還需要安裝可以從 GitHub獲取的imutils

此處查看項目的源代碼

項目 3:計算攝影

該項目旨在創建全景圖,消除圖像中的噪點和不需要的對象,並提高在低光下點擊的照片的可見度。 計算攝影涉及去除高斯白噪聲和失真的照片去噪算法,過濾線條、物體和不需要的元素的照片恢復,以及通過識別字符來檢測車牌的車牌識別

項目 4:使用 OpenCV 在圖像上創建水印

該項目是一個教程,介紹如何使用開放的計算機視覺庫在圖像上創建水印——簽名、徽標或水印,以防止濫用或侵犯版權。 它允許您使用 Python 的 OpenCV 庫同時使用圖像和文本為原始圖像添加水印。 要使用圖像創建水印,您需要定義透明功能和圖像添加功能。 對於文本,我們導入PIL函數,然後調整文本水印位置。

您可以在此處查找項目

項目 5:尋找沃爾多

這是一個對象檢測項目,通過訓練 AI 從一系列不同的圖像中識別 Waldo 來檢測圖像中的 Waldo。 然後我們採用靜態方法通過像素匹配找到 Waldo。 這很重要,因為如果您使用模板圖像,靜態匹配將僅適用於該特定圖像,而不適用於 Waldo 的新圖像。

我們計算相關係數以執行模板匹配,它將 waldo 模板作為輸入,並在要檢測 Waldo 的圖像上逐個像素地滑動它。 相關係數顯示像素位置是“好”還是“壞”匹配。

您可以在此處查看該項目

項目 6:自動駕駛汽車

該項目使用 OpenCV 進行圖像處理和處理來創建自動駕駛汽車。 要訓練汽車自動駕駛,我們需要讓它熟悉街道車道,找到它們並專注於它們。 這意味著機器學習模型需要通過精明的邊緣檢測和霍夫線變換來識別感興趣區域的專業知識,以將像素與代表街道車道的圖像分離。 這也需要掩蔽和計算平均斜率點。

這是用於識別感興趣區域的源代碼:

將 numpy 導入為 np

從 matplotlib 導入 pyplot 作為 plt

image = cv2.imread('../../images/input.jpg')

在[8]中:

圖像.形狀

輸出[8]:

(830, 1245, 3)

在[11]中:

x, y = image.shape[:2]

在 [3] 中:

高度,寬度 = image.shape[:2]

# 獲取起始像素坐標(裁剪矩形的左上角)

start_row, start_col = int(height * .25), int(width * .25)

# 獲取結束像素坐標(右下)

end_row, end_col = int(height * .75), int(width * .75)

# 使用索引來裁剪出我們想要的圖像部分

裁剪 = 圖像 [start_row:end_row , start_col:end_col]

在[6]中:

行,列 = 1, 2

無花果,axs = plt.subplots(row, col, figsize=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(圖像, cv2.COLOR_BGR2RGB))

axs[0].set_title('原圖')

cv2.imwrite('original_image.png', 圖片)

axs[1].imshow(cv2.cvtColor(裁剪,cv2.COLOR_BGR2RGB))

axs[1].set_title('裁剪圖像')

cv2.imwrite('cropped_image.png', 裁剪)

plt.show()

這裡查看項目

項目 7:視障人士的人臉和語音識別

該項目旨在通過使用 Raspberry Pi 2 Model B 和 Raspberry Pi 攝像頭模塊將面部輸入轉換為語音輸出來幫助視障人士。 它是 2022 年最受歡迎的開放式 cv 項目之一。該軟件允許盲人或視力障礙者在不熟悉的環境中檢測標誌、文本或人,在沒有幫助的情況下導航。 該項目的其他要求包括使用 OpenCV 和 Python 進行人臉識別,並使用 GNU Octave 實現語音識別。

你可以在這裡查看代碼

項目8:智能考勤模型

智能考勤系統是 ZoomApp 等在線教育模型的便捷工具。 它通過實時監控學生的出勤情況,幫助您跟踪參加 Zoom 課程的學生。 所要做的就是從學生那裡獲取包含日期的屏幕截圖並將其上傳到 Excel 文件中。

您可以在此處找到此開放式 cv 項目的教程

項目 9:使用 OpenCV 換臉

換臉應用程序和過濾器已經在社交媒體上流行了一段時間。 從顯得年輕和年老到將靜止圖像轉換為動態圖像,Instagram、Snapchat 和 FaceApp 之類的都趕上了潮流。 使用 OpenCV 和 Python 創建換臉應用程序相對容易。

這些步驟包括在使用 dlib 地標檢測器形成的三角形的幫助下將源圖像放置在目標圖像上。

這裡查看項目

項目 10:檢測輪廓和計算形狀

該項目檢測給定形狀的輪廓或輪廓以確定對象具有的形狀類型。 例如,如果圖片有瓶蓋,您可以使用圓形來確定圖像中有多少瓶蓋。

這是這樣做源代碼

將 numpy 導入為 np

從 matplotlib 導入 pyplot 作為 plt

在 [2] 中:

image = cv2.imread('../../images/bottlecaps.jpg')

灰色 = cv2.cvtColor(圖像,cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(灰色, cv2.COLOR_BGR2RGB))

plt.title('瓶蓋'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', 灰色)

輸出[2]:

真的

在 [3] 中:

模糊 = cv2.medianBlur(灰色,5)

circles = cv2.HoughCircles(模糊, cv2.HOUGH_GRADIENT, 1.5, 10)

對於我在圈子[0,:]:

# 畫外圓

cv2.circle(image,(i[0], i[1]), i[2], (255, 0, 0), 2)

# 畫圓心

cv2.circle(image, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(圖像,cv2.COLOR_BGR2RGB))

plt.title('檢測到的圓圈'); plt.show()

cv2.imwrite('detected_circles.jpg', 圖片)

輸出[3]:

真的

在 [ ]:

另一方面,計算形狀涉及應用算法來分割圖像和聚類數據以確定圖像中的興趣點。 我們在 approxPolyDP 函數的幫助下使用二進制和近似輪廓。

你可以在這裡查看這個打開的 cv 項目

最後的想法

計算機視覺允許您開發廣泛的有用應用程序,例如圖像轉換、平移、輪廓檢測、圖像分割、對象檢測、對象跟踪和運動分析。

它還用於增強現實 (AR),通過學習定位面部、檢測形狀等來識別物體和麵部。 您還可以使用簡單的機器學習(例如信用卡閱讀器、手寫數字檢測器或面部閱讀器)創建有趣的 Open CV 項目。

然而,這需要了解數據科學和機器學習,尤其是深度學習。 如果您希望從事 ML 工程師、數據科學家或深度學習工程師的職業,我們建議您獲得機器學習和深度學習的高級證書課程

本課程將幫助您精通統計、回歸、聚類算法、神經網絡、對象檢測和手勢識別的概念。 不僅如此,它將幫助您在 OpenCV、Python、TensorFlow、MySQL、Keras、Excel 和 NumPy 以及其他編程工具和庫方面建立專業知識,並幫助您在人群中脫穎而出。

什麼是 OpenCV?

OpenCV 是一個用於圖像處理和計算機視覺的開源庫,由英特爾維護,現在由開發人員社區提供支持。 作為開源,OpenCV 充分利用了整個開發者社區的力量。 該庫旨在針對實時應用進行優化,例如對象識別、視頻監控、人機交互、醫療和其他相關領域。

什麼是物體檢測?

對象檢測是在圖像或視頻中定位不易檢測的對象的過程。 這個問題通常被表述為分類的一個實例。 給定一張圖像,我們想要對它的各種對象(如汽車、行人和建築物)以及它們的邊界框進行分類,這反過來又會給我們它們的位置。 對象檢測是識別圖像中對象的任務。 對象檢測的目標是在圖像中找到對象的位置(即定位它們)並估計它們的大小和形狀。 對象檢測是一個具有挑戰性的問題,因為對象通常被部分遮擋,有時具有多種外觀,以及圖像中的非剛性變形。

最準確的物體檢測算法是什麼?

目標檢測算法有很多,但沒有一個是 100% 準確的。 目標檢測算法面臨數據過擬合問題。 事實上,一些計算機視覺研究人員聲稱對象檢測算法不可能 100% 準確。 但是,有許多算法可以為給定的數據集提供準確的結果。 如果你買得起 GPU 機器,那麼我們建議你使用基於 OpenCV 的 SVM 實現來進行對象檢測。 它非常準確、快速並且適用於非常大的數據集。 但是,它不能很好地處理遮擋。 如果要構建人臉檢測器,請在 OpenCV 中實現 Haar 級聯分類器。