<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
眾所周知,計算機視覺在機器學習和人工智慧領域獲得了巨大的普及。影象識別技術允許計算機處理比人眼更多的資訊,通常更快、更準確,或者只是在人們不參與觀看的情況下處理。因此,你可能想知道機器如何學習和解釋視覺世界。
在本文中,我將介紹如何使用 Python 的 OpenCV 庫開始處理影象和視訊。我們將涵蓋以下主題:
它是人工智慧和電腦科學的一個領域,訓練計算機理解視覺世界。它是機器學習的主要組成部分之一。它處理自然世界的影象(高維資料)。它執行各種任務,例如獲取、分析和處理以理解影象並將其轉換為數位或符號資訊。
當今的計算機視覺演演算法基於圖形識別,通常依賴於折積神經網路 (CNN)。由於該領域的各種進步,計算機視覺正在蓬勃發展,並且它的受歡迎程度在過去幾年中呈指數增長。
計算機視覺的應用範圍從缺陷檢測到入侵者檢測、口罩檢測到腫瘤檢測、作物監測到植物監測、車輛分類到交通流量分析等。該技術主要應用於零售和製造、交通、媒體、農業、醫療保健、體育、銀行、擴增實境、家庭安全等。
Python 包含一個名為 OpenCV 的庫,用於在計算機視覺領域工作。它是一個開源庫,於 1999 年推出。我們可以執行影象處理、影象分析、視訊分析等任務。該庫主要用 C++ 編寫,具有 C++、Python、Java 和 MATLAB 等介面。
使用 pip 命令可以輕鬆安裝 OpenCV,如下所示
pip install opencv-python
在處理影象時,OpenCV 有許多可以對影象執行的操作。其中,我將討論:
例子:
python 程式碼:
import cv2 img=cv2.imread('img.jpeg') cv2.imshow('Image',img) cv2.waitKey() cv2.destroyAllWindows()
輸出
在影象處理中,經常需要調整影象的大小。OpenCV 為我們提供了幾種輕鬆重新縮放影象的方法。讓我們通過一個例子來理解。
例子:
img2=cv2.resize(img,(400,400)) #resize by a fraction of original size img3=cv2.resize(img,(0,0),fx=0.5,fy=0.6) #using INTER_AREA to shrink the image img4=cv2.resize(img,(600,700),interpolation=cv2.INTER_AREA)
使用 OpenCV 旋轉影象的語法是
M=cv2.getRotationMatrix2D(center, angle,scale)
然後我們使用方法
cv2.wrapAffine(src,M, (h,w))
讓我們通過一個例子來深入瞭解:
例子:
#calculate height and width to get center (h,w)=img.shape[:2] center=(w/2,h/2) #rotate by 90 degrees M = cv2.getRotationMatrix2D(center, 90, 1.0) img90 = cv2.warpAffine(img, M, (h, w)) #rotate by 180 degrees M = cv2.getRotationMatrix2D(center, 180, 1.0) img180 = cv2.warpAffine(img, M, (h, w)) #rotate by 270 degrees M = cv2.getRotationMatrix2D(center, 270, 1.0) img270 = cv2.warpAffine(img, M, (h, w))
要翻轉影象,我們使用函數 cv2.flip() 並傳遞引數,即影象和翻轉程式碼(水平或垂直)
例子:
#flip- vertical axes img=cv2.flip(img,0) #flip- horizontal axes img=cv2.flip(img,1)
要將影象重寫為新檔案,我們使用函數 imwrite() 如下:
cv2.imwrite('new_img.jpg',img)
#crop from top img=img[0:100,0:100] #crop by specifying height and width img=img[50:200,50:100]
使用 OpenCV,我們可以使用不同的函數在影象上快速繪製各種形狀,如圓形、矩形、多邊形等。讓我們用一個例子來理解:
例子:
#creating a blank image import cv2 as cv2 import numpy as np img=np.zeros((500,500,3),dtype=float) #changing the color of the image to green img[:]=0,255,0 #Red img[:]=0,0,255
#changing the color of a particular portion img[200:300,300:450]=0,255,0 #drawing a rectangle cv2.rectangle(img,(100,100),(180,180),color=(255,0,0),thickness=5) #draw a circle with filling the color cv2.circle(img,center=(100,300),radius=60,color=(0,255,0),thickness=-1) #drawing a line cv2.line(img,(0,0),(317,356),thickness=3,color=(0,255,0)) #adding text cv2.putText(img,org=(50,50),fontScale=3,color=(255,0,0) ,thickness=2,lineType=cv2.LINE_AA,text="IMAGES", fontFace=cv2.FONT_HERSHEY_COMPLEX_SMALL) cv2_imshow(img) cv2.waitKey(0)
視訊是幀序列或影象序列。影象通常採用 BGR(藍、綠、紅)的形式。每個畫素的值都在 0-255 之間。要開始使用 OpenCV 處理視訊,我們使用以下函數:
Cv2.VideoCapture():它建立與視訊的連線。它帶有一個引數,該引數指示是使用內建攝像頭還是附加攝像頭。值“0”表示內建攝像頭。
Cap.read():這個方法可以讓我們得到一個幀。
Cv2.cvtColor():允許你更改影象使用的顏色模型。這包括從 BGR 轉換為 RGB 和灰度。
在處理視訊方面,在本文中,我們將學習
讓我們看幾個捕獲視訊屬性的範例。
要捕獲幀形狀:
frame.shape (2160, 3840, 3) plt.imshow(frame) plt.show()
要更改框架的顏色,我們使用函數 cv2.cvtColor(),如下所示:
#changing the color of the frame plt.show() plt.imshow(cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY))
為了捕捉視訊,我們使用函數 cv2.VideoCapture()
cap=cv2.VideoCapture('/content/video.mp4') cap.read()
要獲取框架的高度,我們使用 cap.get() 函數如下:
#height cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
為了獲得框架的寬度,我們使用:
#width cap.get(cv2.CAP_PROP_FRAME_WIDTH)
要獲取幀數,我們使用函數 cap.get() 如下:
#number of frames
cap.get(cv2.CAP_PROP_FRAME_COUNT)
為了獲得每秒的幀數,我們使用
#number of frames per sec cap.get(cv2.CAP_PROP_FPS)
例子:
#importing dependencies import cv2 from matplotlib import pyplot as plt #establish capture cap=cv2.VideoCapture('/content/video.mp4') #loop through each frame while(cap.isOpened()): ret,frame=cap.read() frame=cv2.resize(frame,(1200,700)) cv2.imshow(‘Video',frame) if cv2.waitKey(10) & 0xFF == ord('q'): break #close down everything cap.release() cv2.destroyALLWindows()
import cv2 from google.colab.patches import cv2_imshow cap=cv2.VideoCapture('/content/video.mp4') height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) fps=int(cap.get(cv2.CAP_PROP_FPS)) frame_size = (width,height) video_writer= cv2.VideoWriter('/content/output.avi',cv2.VideoWriter_fourcc('M','J','P','G'), fps, frame_size) for frame_idx in range(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))): ret,frame=cap.read() gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) video_writer.write(gray) if cv2.waitKey(10) & 0xFF== ord('q'): break cap.release() cv2.destroyALLWindows()
本文幫助你建立了與計算機視覺相關的出色應用程式。希望你現在對以下內容有一個很好的瞭解:
到此這篇關於如何使用Python的OpenCV庫處理影象和視訊的文章就介紹到這了,更多相關Python OpenCV處理影象和視訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45