电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python OpenCV快速入門教程

瀏覽:3日期:2022-06-22 09:45:40
OpenCV

OpenCV是計算機視覺中最受歡迎的庫,最初由intel使用C和C ++進行開發的,現在也可以在python中使用。該庫是一個跨平臺的開源庫,是免費使用的。OpenCV庫是一個高度優化的庫,主要關注實時應用程序。OpenCV庫是2500多種優化算法的組合,可用于檢測和識別不同的人臉,實時識別圖像中的對象,使用視頻和網絡攝像頭對不同的人類動作進行分類,跟蹤攝像機的運動,跟蹤運動對象(例如汽車,人等),實時計數對象,縫合圖像來產生高分辨率圖像,從圖像數據庫中查找相似的圖像,從使用閃光燈拍攝的圖像中消除紅眼并提高圖像質量,跟蹤眼睛的運動,跟蹤臉部等。它擁有大約4.7萬活躍用戶社區,下載量超過1800萬。谷歌,亞馬遜,特斯拉,微軟,本田等許多大公司都使用Open cv來改善他們的產品,它更是驅動了AI的發展。

先決條件

在開始編寫代碼之前,我們需要在設備上安裝opencv。如果你是ProIn編程專家,并且熟悉每個IDE,那么請使用Pycharm并從設置中的程序包管理器安裝OpenCV-python。如果你是初學者或中級程序員,或者只是想關注博客,那么我們將使用代碼編輯器而不是IDE。只需轉到Visual Studio Code網站并根據你的操作系統下載最新版本即可。

https://code.visualstudio.com/download

現在,我們將創建一個虛擬環境,并在其中安裝opencv。打開終端,然后使用cd定位到桌面,使用mkdir 創建一個名為opencv

的文件夾,然后運行以下命令。

python -m venv env

現在,使用envscriptsactivate激活環境,你會在C:UsersusernameDesktopopencv之前看到小括號(env)出現。現在,只需使用pip安裝OpenCV。

我們會在本文中涵蓋7個主題

1. 讀,寫和顯示圖像2. 讀取視頻并與網絡攝像頭集成3. 調整大小和裁剪圖像4. 基本的圖像過濾器使用的函數5. 繪制不同的形狀6. 在圖像上書寫文字7. 檢測并裁剪臉部

讀,寫和顯示圖像

要使用Opencv讀取圖像,我們有imread()函數; 要顯示圖像,有imshow()函數,而對于書寫,我們有imwrite()函數。讓我們看看它們的語法。

imread():

img = cv2.imread('PATH_TO_IMAGE.jpg/png')Exampleimg = imread('images/dog0.jpg')imshow():

cv2.imshow('WINDOW NAME',IMG_VAR)Exampleimshow('Dog Image',img)imwrite():

cv2.imwrite(FILENAME, IMAGE)filename: A string representing the file name. The filename must include image format like .jpg, .png, etc.image: It is the image that is to be saved.Examplecv2.imwrite(’images/img’,img)讀取視頻并與網絡攝像頭集成

讀取視頻文件與在OpenCV中讀取圖像文件非常相似,區別在于我們使用了cv2.videocapture。

句法

video = cv2.VideoCapture('FILEPATH.mp4')Examplevideo = cv2.VideoCapture('video/dog/dog.mp4')

視頻是許多幀結合在一起的集合,每幀都是一幅圖像。要使用OpenCV觀看視頻,我們只需要使用while循環顯示視頻的每一幀。

while True: success , img = cap.read() cv2.imshow('Video',img) if cv2.waitKey(1) & 0xff==ord(’q’):##key ’q’ will break the loop break

要與網絡攝像頭集成,我們需要傳遞網絡攝像頭的端口值而不是視頻路徑。如果你使用的是筆記本電腦,但沒有連接任何外部網絡攝像頭,則只需傳遞參數0;如果你有外部網絡攝像頭,則傳遞參數1。

cap = cv2.VideoCapture(0)cap.set(3,640) ## Frame widthcap.set(4,480) ## Frame Heightcap.set(10,100) ## Brightnesswhile True: success, img = cap.read() cv2.imshow('Video',img) if cv2.waitKey(1) & 0xff == ord(’q’):break調整大小和裁剪圖像

調整大小是更改圖像形狀的過程。在Opencv中,我們可以使用resize函數調整圖像形狀的大小。

句法

cv2.resize(IMG,(WIDTH,HEIGHT))IMG: image which we want to resizeWIDTH: new width of the resize imageHEIGHT: new height of the resize imageExamplecv2.resize(img,(224,224))

要首先調整圖像的大小,我們需要知道圖像的形狀。我們可以使用shape來找到任何圖像的形狀,然后根據圖像形狀,可以增加或減小圖像的大小。讓我們看看示例。

import cv2img = cv2.imread('images/img0.jpg') ##Choose any imageprint(img.shape)imgResize = cv2.resize(img,(224,224)) ##Decrease sizeimgResize2 = cv2.resize(img,(1024,1024)) ##Increase sizecv2.imshow('Image',img)cv2.imshow('Image Resize',imgResize)cv2.imshow('Image Increase size',imgResize2)print(imgResize.shape)cv2.waitKey(0)

如果你不想對寬度和高度進行硬編碼,也可以使用形狀,然后使用索引來增加寬度和高度。

import cv2img = cv2.imread('images/img0.jpg') ##Choose any imageprint(img.shape)shape = img.shapeimgResize = cv2.resize(img,(shape[0]//2,shape[1]//2))##Decrease sizeimgResize2 = cv2.resize(img,(shape[0]*2,shape[1]*2)) ##Increase sizecv2.imshow('Image',img)cv2.imshow('Image Resize',imgResize)cv2.imshow('Image Increase size',imgResize2)print(imgResize.shape)cv2.waitKey(0)

Python OpenCV快速入門教程

裁剪圖像

裁剪是獲取圖像的一部分過程。在OpenCV中,我們可以通過定義裁剪后的矩形坐標來執行裁剪。

句法

imgCropped = img[y1:y2, x1:x2](x1,y1): top-left vertex(x2,y2): bottom-right vertexExampleimgCropped = img[0:100,200:200]

使用裁剪方法,讓我們嘗試從圖像中獲取蒙娜麗莎的臉。

import cv2img = cv2.imread('images/img0.jpg')imgCropped = img[50:250,120:330]cv2.imshow('Image cropped',imgCropped)cv2.imshow('Image',img)cv2.waitKey(0)

Python OpenCV快速入門教程

你也可以使用paint來找到(x1,y1),(x2,y2)的正確坐標。右鍵單擊圖像并保存,嘗試從圖像中獲取王卡。

Python OpenCV快速入門教程

提示:使用paint來找到正確的坐標,最后使用調整大小來增加裁剪圖像的大小。“在尋求解決方案之前,請嘗試自己動手做。”👉解決方案- https://gist.github.com/Abhayparashar31/9b01473431de765c0a73e81271233d91

基本的圖像過濾器使用的函數

我們可以在圖像上使用許多基本的濾鏡操作,例如將圖像轉換為灰度圖像,模糊圖像等等。讓我們一一看一下比較重要的操作。

將圖像轉為灰度圖像

要將圖像轉換為灰度,我們可以使用一個函數cvtColor,這里我們將cv2.COLOR_BGR2GRAY作為參數傳遞。

imgGray = cv2.cvtColor(IMG,cv2.CODE)IMG: Original imageCODE: Conversion code for Gray(COLOR_BGR2GRAY)ExampleimgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)將圖像轉為HSV

要將圖像轉換為HSV,我們可以使用函數cvtColor,這里我們將cv2.COLOR_BGR2HSV作為參數傳遞。它主要用于對象跟蹤。

imgGray = cv2.cvtColor(IMG,cv2.CODE)IMG: Original imageCODE: Conversion code for Gray(COLOR_BGR2HSV)ExampleimgHsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)圖像模糊

模糊用于去除圖像中的多余噪聲,也稱為平滑,這是對圖像應用低通濾波器的過程。要在Opencv中使用模糊,我們有一個函數GaussianBlur。

imgBlur = cv2.GaussianBlur(img,(sigmaX,sigmaY),kernalSize)kernalsize − A Size object representing the size of the kernel.sigmaX − A variable representing the Gaussian kernel standard deviation in X direction.sigmaY - same as sigmaXExmapleimgBlur = cv2.GaussianBlur(img,(3,3),0)邊緣檢測

在OpenCV中,我們使用Canny邊緣檢測器來檢測圖像中的邊緣,也有不同的邊緣檢測器,但最著名的是Canny邊緣檢測器。Canny邊緣檢測器是一種邊緣檢測算子,它使用多階段算法來檢測圖像中的大范圍邊緣,它由John F. Canny在1986年開發。

imgCanny = cv2.Canny(img,threshold1,threshold2)threshold1,threshold2:Different values of threshold different for every imagesExampleimgCanny = cv2.Canny(img,100,150)膨脹

膨脹是用來增加圖像中邊緣的大小。首先,我們定義一個大小為奇數(5,5)的核矩陣,然后利用核函數對圖像進行放大。我們對Canny邊緣檢測器的輸出圖像進行了放大處理。

kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5imgDialation = cv2.dilate(imgCanny,kernel,iterations=1) ##DIALATION腐蝕

腐蝕是擴張的反面,它用于減小圖像邊緣的尺寸。首先,我們定義一個奇數(5,5)的核矩陣大小,然后使用核對圖像執行腐蝕。我們對Canny邊緣檢測器的輸出圖像施加腐蝕。

kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5imgDialation = cv2.erode(imgCanny,kernel,iterations=1) ##EROSION

現在,在同一程序中將所有基礎函數應用于Monalisa映像。

Python OpenCV快速入門教程

繪制不同的形狀

我們可以使用OpenCV來繪制矩形,圓形,直線等不同的形狀。

矩形:

要在圖像上繪制矩形,我們使用矩形函數。在函數中,我們傳遞寬度,高度,X,Y,RGB中的顏色,厚度作為參數。

cv2.rectangle(img,(w,h),(x,y),(R,G,B),THICKNESS)w: widthh: heightx: distance from x axisy: distance from y axisR,G,B: color in RGB form (255,255,0)THICKNESS: thickness of rectangel(integer)Examplecv2.rectangle(img,(100,300),(200,300),(255,0,255),2)圓:

要繪制一個圓,我們使用cv2.circle。我們傳遞x,y,半徑大小,RGB形式的顏色,厚度作為參數。

cv2.circle(img,(x,y),radius,(R,G,B),THICKNESS)x: distance from x axisy: distance from y axisradius: size of radius(integer)R,G,B: color in RGB form (255,255,0)THICKNESS: thickness of rectangel(integer)Examplecv2.circle(img,(200,130),90,(255,255,0),2)線:

要繪制一條線,我們使用cv2.line,使用起點(x1,y1),終點(x2,y2),RGB形式的顏色,厚度作為參數。

cv2.line(img,(x1,y1),(x2,y2),(R,G,B),THICKNESS)x1,y1: start point of line (integer)x2,y2: end point of line (integer)R,G,B: color in RGB form (255,255,0)THICKNESS: thickness of rectangel(integer)Examplecv2.line(img,(110,260),(300,260),(0,255,0),3)在圖像上書寫文字

在OpenCV中,我們有一個函數cv2.puttext, 可以在特定位置的圖像上寫文本。它以圖像,文本,x,y,顏色,字體,字體比例,粗細為輸入。

cv2.putText(img,text,(x,y),FONT,FONT_SCALE,(R,G,B),THICKNESS)img: image to put text ontext: text to put on imageX: text distance from X axisY: text distance from Y axisFONT: Type of FONT (ALL FONT TYPES)FONT_SCALE: Scale of Font(Integer)R,G,B: color in RGB form (255,255,0)THICKNESS: thickness of rectangel(integer)Examplecv2.putText(img,'HELLO',(120,250),cv2.FONT_HERSHEY_COMPLEX,1,(255,255,255),2)

Python OpenCV快速入門教程

下載Monalisa圖片。任務:使用形狀和文本為左側圖像中所示的Monalisa臉創建框架。提示:首先是一個圓形,然后是矩形,然后根據圓形和矩形放置文本,最后根據文本放置一行。👉解決方案- https://gist.github.com/Abhayparashar31/af36bf25ce61345266db4b54aba33be1

檢測并裁剪臉部

在創建人臉識別系統時,人臉檢測是非常有用的。在OpenCV中,我們提供了許多可用于不同目的的預訓練haar級聯分類器。在OpenCV GitHub上查看分類器的完整列表。

https://github.com/opencv/opencv/tree/master/data/haarcascades

為了檢測OpenCV中的人臉,我們使用了haarcascade_frontalface_default.xml分類器,它會返回我們圖像的四個坐標(w,h,x,y),使用這些坐標,我們將在臉部上繪制一個矩形,然后使用相同的坐標來裁剪臉部。現在使用imwrite,我們將裁剪的圖像保存在目錄中。

import cv2# Load the cascadeface_cascade = cv2.CascadeClassifier(’haarcascade_frontalface_default.xml’)# Read the input imageimg = cv2.imread(’images/img0.jpg’)# Convert into grayscalegray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Detect facesfaces = face_cascade.detectMultiScale(gray, 1.3, 4)# Draw rectangle around the facesfor (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) # Cropping Face crop_face = img[y:y + h, x:x + w] #Saving Cropped Face cv2.imwrite(str(w) + str(h) + ’_faces.jpg’, crop_face)cv2.imshow(’img’, img)cv2.imshow('imgcropped',crop_face)cv2.waitKey()

Python OpenCV快速入門教程

參考文獻

[1] https://opencv.org/about/[2] https://pypi.org/project/opencv-python/[3] https://www.murtazahassan.com/

以上就是Python OpenCV快速入門教程的詳細內容,更多關于Python OpenCV入門教程的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 卧涛科技有限公司科技项目申报公司|高新技术企业申报|专利申请 | 酸度计_PH计_特斯拉计-西安云仪 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 鑫达滑石-辽宁鑫达滑石集团 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | 好杂志网-首页| 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 国际高中-国际学校-一站式择校服务-远播国际教育 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 安徽成考网-安徽成人高考网| 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 |