一文綜述OpenCV基礎+計算機視覺基礎
點擊下面卡片關注,”AI算法與圖像處理”
最新CV成果,火速送達
什么是計算機視覺? 計算機視覺如何工作? 計算機視覺的應用 什么是OpenCV? OpenCV的簡史 OpenCV快速入門

什么是計算機視覺?
計算機視覺是一門跨學科的科學領域,涉及計算機如何從數字圖像或視頻中獲得高級了解。從工程學的角度來看,它試圖理解和自動化人類視覺系統(tǒng)可以完成的任務。
計算機視覺是人工智能(AI)的領域,它使計算機和系統(tǒng)能夠從數字圖像,視頻和其他視覺輸入中獲取有意義的信息,并根據該信息采取行動或提出建議。如果AI使計算機能夠思考,則計算機視覺使他們能夠看到,觀察和理解。

計算機視覺如何工作?
可以通過視頻,照片或3D技術實時獲取甚至大集合的圖像進行分析。
深度學習模型會自動執(zhí)行此過程的大部分過程,但是通常會先向模型提供數千張標記或預先識別的圖像,然后對模型進行訓練。
最后一步是解釋性步驟,在此步驟中對對象進行識別或分類。

計算機視覺的應用
癌癥檢測 COVID-19診斷 口罩檢測 車輛分類 交通流量分析 停車占用檢測 自動車牌識別 客戶追蹤 人數盤點 社會距離 球追蹤 球門線技術
什么是OpenCV?
OpenCV的簡史
OpenCV由加里·布拉德斯基(Gary Bradsky)于1999年在英特爾創(chuàng)立,第一版于2000年問世。瓦迪姆·皮薩列夫斯基(Vadim Pisarevsky)與加里·布拉德斯基(Gary Bradsky)一起管理英特爾的俄羅斯軟件OpenCV團隊。 2005年,OpenCV用于Stanley,該車贏得了2005年DARPA大挑戰(zhàn)賽的冠軍。后來,在Willow Garage的支持下,它的發(fā)展得以繼續(xù),Gary Bradsky和Vadim Pisarevsky領導了該項目。OpenCV現(xiàn)在支持與計算機視覺和機器學習有關的多種算法,并且正在日益擴展。 OpenCV支持多種編程語言,例如C ++,Python,Java等,并且可在包括Windows,Linux,OS X,Android和iOS在內的不同平臺上使用。基于CUDA和OpenCL的高速GPU操作的接口也正在積極開發(fā)中。 OpenCV-Python是用于OpenCV的Python API,結合了OpenCV C ++ API的最佳質量和Python語言。
OpenCV快速入門
讀取圖像
pip install opencv-python
cv2.imread( )函數讀取圖像。此函數將獲取圖像的文件的路徑作為參數。由于我的python工作文件與圖片位于同一文件夾中,因此我直接輸入圖片的名稱。這里要注意的一點是編寫視覺效果的擴展。別忘了這個。cv2.namedWindow( ).函數執(zhí)行此操作。該函數將窗口的名稱作為其第一個參數。實際上,這就足夠了。但是由于我希望能夠更改打開的窗口的大小,因此我添加了參數cv2.WINDOW_NORMAL.cv2.imshow( )用于在屏幕上顯示當前圖像。它有兩個參數。第一個是我們將要顯示的視覺效果的名稱,第二個是它在其中注冊的對象。在這里,我將圖像保存為img。因此,我將img用作第二個參數。cv2.waitKey(0)是因為希望在打開的可視屏幕上隨時關閉它。此函數以毫秒為單位獲取數字值。當我們在此處寫入0時,表示我們可以隨時關閉窗口。cv2.destroyAllWindows().的習慣。當我們執(zhí)行高級項目時,我們會忘記關閉許多在屏幕上打開的窗口。此函數可避免這種情況。import cv2
img = cv2.imread("klon.jpg")
cv2.namedWindow("Image",cv2.WINDOW_NORMAL)
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
從網絡攝像頭讀取視頻
cv2.VideoCapture(0)函數從計算機攝像頭捕獲視頻。此處的值0用于訪問連接到計算機的相機。ret, frame = capture.read()
frame = cv2.flip(frame, 1).此處編寫代碼的原因,當我們在幀后輸入參數為1時,它給出了y軸圖像的倒數。cv2.imshow("Webcam", frame)以顯示從相機拍攝的幀。cv2.imshow("Webcam", frame)
if cv2.waitKey(30) & 0xFF == ord("q"):
break
0xFF == ord("q")是指按鍵盤上的q鍵。capture.release()
import cv2
capture = cv2.VideoCapture(0)
while True:
ret, frame = capture.read()
frame = cv2.flip(frame, 1)
cv2.imshow("Webcam", frame)
if cv2.waitKey(30) & 0xFF == ord("q"):
break
capture.release()
cv2.destroyAllWindows()
長寬比應用
為其保留圖像的變量的名稱 寬度 高度 并具有避免在調整大小時插值的功能
r = height / float(h)
dimension = (int(w*r),height)
return cv2.resize(img, dimension, interpolation= inter)
img = cv2.imread("klon.jpg")
img1 = resizewithAspectRatio(img,
width = None,
height = 600,
inter = cv2.INTER_AREA)
cv2.imshow("Original",img)
cv2.imshow("Resized",img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
def resizewithAspectRatio( img
, width = None
, height = None
, inter = cv2.INTER_AREA):
dimension: None
(h,w) = img.shape[:2]
if width is None and height is None:
return img
if width is None:
r = height / float(h)
dimension = (int(w*r),height)
else:
r = width / float(w)
dimension = (width, int(h*r))
return cv2.resize(img, dimension, interpolation= inter)
img = cv2.imread("klon.jpg")
img1 = resizewithAspectRatio( img
, width = None
, height = 600
, inter = cv2.INTER_AREA)
cv2.imshow("Original",img)
cv2.imshow("Resized",img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復:c++,即可下載。歷經十年考驗,最權威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號后臺回復:CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點亮
,告訴大家你也在看
評論
圖片
表情
