0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣在樹(shù)莓派上使用OpenCV繪制不同的幾何形狀并識(shí)別面部特征

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-31 10:30 ? 次閱讀

Python代碼繪制幾何形狀

下面的代碼將在黑色圖像上繪制線條,橢圓,圓形,矩形,折線和文字。復(fù)制此代碼并執(zhí)行它。我們將詳細(xì)介紹代碼如何在下面工作。

import cv2

import numpy as np

# Create a black image

img = np.zeros((512, 512, 3), np.uint8)

# img = cv2.line(image, (starting point), (Ending point), (color), line thickness)

img = cv2.line(img, (0, 256), (512, 256), (255, 0, 0), 10)

# cv2.Ellipse(img, center, axes, angle, start_angle, end_angle, color, thickness=1)

img = cv2.ellipse(img,(256,256),(50,50),180,0,180,(255, 255, 0),-1)

img = cv2.ellipse(img,(256,256),(50,50),0,0,180,(0, 255, 0),-1)

# cv2.Circle(img, center, radius, color, thickness)

img = cv2.circle(img, (256, 256), 56, (0, 0, 255), 10)

# img = cv2.rectangle(image, (Top Left Corner), (Bottom Right Corner), (color), thickness)

img = cv2.rectangle(img, (189, 189), (323, 323), (0, 255, 0), 10)

# cv2.PolyLine(img, polys, is_closed, color, thickness=1)

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

img = cv2.polylines(img,[pts],True,(0,255,255))

# cv2.PutText(img, text, org, fontFace, fontScale, color, thickness, line type)

font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img,‘OpenCV’,(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

# Create the resizeable window

cv2.namedWindow(‘image’, cv2.WINDOW_NORMAL)

cv2.imshow(‘image’, img)

cv2.waitKey(0)

cv2.destroyAllWindows()

運(yùn)行代碼將打開(kāi)此輸出:

代碼細(xì)分

首先,我們導(dǎo)入所需的軟件包。 OpenCV包幫助我們繪制不同的幾何形狀,NumPy包允許我們創(chuàng)建一個(gè)空白圖像并進(jìn)行其他數(shù)學(xué)運(yùn)算。

import cv2

import numpy as np

接下來(lái),我們創(chuàng)建一個(gè)黑色圖像,我們可以在其上繪制幾何圖形形狀。

img = np.zeros((512, 512, 3), np.uint8)

然后我們使用 cv2.line() 函數(shù)繪制一條厚度為5像素的藍(lán)色對(duì)角線。我們將在中心左側(cè)到中間右側(cè)的黑色圖像上畫(huà)一條藍(lán)線。

cv2.line() 函數(shù)有五個(gè)參數(shù)

圖像文件

起點(diǎn)(圖像線上將開(kāi)始的位置)

結(jié)束點(diǎn)

顏色的行

行的粗細(xì)

#img = cv2.line(image, (starting point), (Ending point), (color), line thickness)

img = cv2.line(img, (0, 256), (512, 256), (255, 0, 0), 10)

現(xiàn)在,我們將在圖像的中心繪制兩個(gè)橢圓。要繪制橢圓,我們需要傳遞幾個(gè)參數(shù):

圖像文件

中心位置(x,y)

主要和短軸長(zhǎng)度

橢圓沿逆時(shí)針?lè)较虻男D(zhuǎn)角度

開(kāi)始和結(jié)束角度(起始和結(jié)束角度表示橢圓弧的起點(diǎn)和終點(diǎn)從長(zhǎng)軸順時(shí)針?lè)较?,即給出值0和360給出完整的橢圓)

橢圓的顏色

橢圓的厚度(-1表示它將填充形狀)

#cv2.ellipse(img, center, axes, angle, start angle, end angle, color, thickness=1)

img = cv2.ellipse(img,(256,256),(50,50),180,0,180,(255, 255, 0),-1)

img = cv2.ellipse(img,(256,256),(50,50),0,0,180,(0, 255, 0),-1)

接下來(lái),我們將在橢圓上繪制一個(gè)紅色圓圈。要畫(huà)一個(gè)圓,我們需要傳遞圖像文件,中心坐標(biāo),圓的半徑,(B,G,R)格式的顏色和圓的厚度。

#cv2.Circle(img, center, radius, color, thickness)

img = cv2.circle(img, (256, 256), 56, (0, 0, 255), 10)

之后,我們?cè)趫A圈上畫(huà)一個(gè)綠色矩形。要繪制矩形,您需要矩形的左上角和右下角。

#img = cv2.rectangle(image, (Top Left Corner), (Bottom Right Corner), (color), thickness)

img = cv2.rectangle(img, (189, 189), (323, 323), (0, 255, 0), 10)

要繪制多邊形,我們需要頂點(diǎn)的坐標(biāo)。將這些點(diǎn)組成一個(gè)形狀為ROWS x 1 x 2的數(shù)組,其中ROWS是頂點(diǎn)數(shù),它應(yīng)該是int32類型。

這里我們繪制一個(gè)帶有四個(gè)黃色頂點(diǎn)的小多邊形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

# cv2.PolyLine(img, polys, is_closed, color, thickness=1)

img = cv2.polylines(img,[pts],True,(0,255,255))

要將文本放入圖像中,我們需要提供想要寫(xiě)入的文本數(shù)據(jù),我們想要放置它的位置坐標(biāo)(即數(shù)據(jù)開(kāi)始的左下角),字體類型,字體比例(指定字體大?。伾?,粗細(xì)和線型。

#cv2.PutText(img, text, org, fontFace, fontScale, color, thickness, line type)

font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img,‘OpenCV’,(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

用于檢測(cè)面部和在面上繪制圓形的Python代碼

現(xiàn)在我們將編寫(xiě)將檢測(cè)面部中的面部的代碼圖像并在臉部周圍繪制圓圈。為了檢測(cè)面部,我們將使用Haar級(jí)聯(lián)分類器。 OpenCV已經(jīng)包含許多面部,眼睛,微笑等預(yù)先訓(xùn)練的分類器。我們將要使用的分類器將檢測(cè)面部。您可以獲得級(jí)聯(lián)文件。

將此文件保存在工作目錄中作為“ haarcascade_frontalface_default.xml ”。

Python代碼如下:

# Import OpenCV library

import cv2

# Load a cascade file for detecting faces

faceCascade = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”);

# Load image

image = cv2.imread(‘obamafamily.jpg’)

# Convert into grayscale

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Look for faces in the image using the loaded cascade file

faces = faceCascade.detectMultiScale(gray, 1.2, 5)

for (x,y,w,h) in faces:

# Create circle around faces

cv2.circle(image, (int((x + x + w)/2), int((y + y + h)/2)), int(h/2), (0, 255, 0), 5)

# Create the resizeable window

cv2.namedWindow(‘Obama’, cv2.WINDOW_NORMAL)

# Display the image

cv2.imshow(‘Obama’, image)

# Wait until we get a key

k=cv2.waitKey(0)

# If pressed key is ‘s’

if k == ord(‘s’):

# Save the image

cv2.imwrite(‘convertedimage.jpg’, image)

# Destroy all windows

cv2.destroyAllWindows()

# If pressed key is ESC

elif k == 27:

# Destroy all windows

cv2.destroyAllWindows(

運(yùn)行代碼后,程序會(huì)在圖像中檢測(cè)到的區(qū)域創(chuàng)建圓圈。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41091
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1679

    瀏覽量

    105257
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenCV圖像識(shí)別C++代碼

    安裝OpenCV庫(kù) 首先,您需要在您的計(jì)算機(jī)上安裝OpenCV庫(kù)。您可以從OpenCV官網(wǎng)下載預(yù)編譯的庫(kù)或從源代碼編譯。安裝完成后,確保將OpenCV的頭文件和庫(kù)文件添加到您的項(xiàng)目中。
    的頭像 發(fā)表于 07-16 10:42 ?1103次閱讀

    opencv圖像識(shí)別有什么算法

    圖像識(shí)別算法: 邊緣檢測(cè) :邊緣檢測(cè)是圖像識(shí)別中的基本步驟之一,用于識(shí)別圖像中的邊緣。常見(jiàn)的邊緣檢測(cè)算法有Canny邊緣檢測(cè)器、Sobel邊緣檢測(cè)器和Laplacian邊緣檢測(cè)器。 特征
    的頭像 發(fā)表于 07-16 10:40 ?375次閱讀

    opencv-python和opencv一樣嗎

    -Python是OpenCV的一個(gè)Python語(yǔ)言接口,它允許開(kāi)發(fā)者使用Python語(yǔ)言來(lái)調(diào)用OpenCV庫(kù)的功能。 雖然OpenCVOpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?449次閱讀

    基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)

    基于OpenCV的人臉識(shí)別系統(tǒng)是一個(gè)復(fù)雜但功能強(qiáng)大的系統(tǒng),廣泛應(yīng)用于安全監(jiān)控、人機(jī)交互、智能家居等多個(gè)領(lǐng)域。下面將詳細(xì)介紹基于OpenCV的人臉識(shí)別系統(tǒng)的基本原理、實(shí)現(xiàn)步驟,
    的頭像 發(fā)表于 07-11 15:37 ?1.1w次閱讀

    神經(jīng)網(wǎng)絡(luò)圖像識(shí)別中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)圖像識(shí)別領(lǐng)域的應(yīng)用日益廣泛。神經(jīng)網(wǎng)絡(luò)以其強(qiáng)大的特征提取和分類能力,為圖像識(shí)別帶來(lái)了革命性的進(jìn)步。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-01 14:19 ?412次閱讀

    使用OpenCV進(jìn)行儀表指針刻度的識(shí)別與讀取

    首先說(shuō)一下模板匹配,它是OpenCV自帶的一個(gè)算法,可以根據(jù)一個(gè)模板圖到目標(biāo)圖上去尋找對(duì)應(yīng)位置,如果模板找的比較好那么效果顯著,這里說(shuō)一下尋找模板的技巧,模板一定要標(biāo)準(zhǔn)、精準(zhǔn)且特征明顯。
    發(fā)表于 02-22 13:54 ?1518次閱讀
    使用<b class='flag-5'>OpenCV</b>進(jìn)行儀表指針刻度的<b class='flag-5'>識(shí)別</b>與讀取

    秒懂鴻蒙OS 生物特征識(shí)別

    鴻蒙OS 生物特征識(shí)別概述 提供生物特征識(shí)別認(rèn)證能力,即基于人體固有的生理特征和行為特征來(lái)
    的頭像 發(fā)表于 01-29 16:26 ?3514次閱讀

    全志H616核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測(cè)

    在給核桃派開(kāi)發(fā)板用OpenCV讀取圖像顯示到pyqt5的窗口上加入顏色檢測(cè)功能,嘗試將圖像中所有藍(lán)色的東西都用一個(gè)框標(biāo)記出來(lái)。顏色檢測(cè)核心api按照慣例,先要介紹一下opencv
    發(fā)表于 01-22 10:10

    核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測(cè)

    在前幾周的文章中已經(jīng)介紹過(guò)如何在核桃派上OpenCV讀取圖像顯示到pyqt5的窗口上,這里在上一篇文章的基礎(chǔ)上,給開(kāi)發(fā)板加入顏色檢測(cè)功能,嘗試將圖像中所有藍(lán)色的東西都用一個(gè)框標(biāo)記出來(lái)。
    的頭像 發(fā)表于 01-20 17:50 ?808次閱讀
    <b class='flag-5'>在</b>核桃<b class='flag-5'>派上</b>實(shí)現(xiàn)USB攝像頭的<b class='flag-5'>OpenCV</b>顏色檢測(cè)

    如何在 CFD 設(shè)計(jì)中利用網(wǎng)格維護(hù)幾何形狀減少運(yùn)行時(shí)間?

    如何在 CFD 設(shè)計(jì)中利用網(wǎng)格維護(hù)幾何形狀減少運(yùn)行時(shí)間?
    的頭像 發(fā)表于 11-24 17:07 ?403次閱讀
    如何在 CFD 設(shè)計(jì)中利用網(wǎng)格維護(hù)<b class='flag-5'>幾何</b><b class='flag-5'>形狀</b><b class='flag-5'>并</b>減少運(yùn)行時(shí)間?

    OpenCV對(duì)openEuler提供上游原生支持

    ),是一個(gè)多平臺(tái)的開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。它提供了豐富的功能,包括圖像處理,特征檢測(cè),目標(biāo)識(shí)別,機(jī)器學(xué)習(xí)等,計(jì)算機(jī)視覺(jué)領(lǐng)域,OpenCV憑借其強(qiáng)大的功能、性能和廣泛的應(yīng)用場(chǎng)景,已經(jīng)建立起絕
    的頭像 發(fā)表于 11-20 09:14 ?683次閱讀

    SBCFormer首次樹(shù)莓派4B上以1fps處理取得80.0%精度

    計(jì)算機(jī)視覺(jué)不同領(lǐng)域解決已成為解決實(shí)際問(wèn)題的常用方法,如智慧農(nóng)牧管理。這類場(chǎng)景并不需要每秒處理許多幀,此時(shí)樹(shù)莓派這類單板主機(jī)就派上了用場(chǎng)。
    的頭像 發(fā)表于 11-09 12:32 ?743次閱讀
    SBCFormer首次<b class='flag-5'>在</b><b class='flag-5'>樹(shù)莓</b>派4B上以1fps處理取得80.0%精度

    智能車識(shí)別圖an用openmv還是用opencv?

    智能車創(chuàng)意組識(shí)別圖an用openmv 還是用 opencv 比較好
    發(fā)表于 10-24 06:24

    【幸狐Core3566模組試用體驗(yàn)】基于openCV的貓臉識(shí)別

    本文主要介紹如何基于openCV來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的貓臉識(shí)別應(yīng)用。
    的頭像 發(fā)表于 09-25 09:05 ?841次閱讀
    【幸狐Core3566模組試用體驗(yàn)】基于<b class='flag-5'>openCV</b>的貓臉<b class='flag-5'>識(shí)別</b>

    【幸狐 Core3566 模組試用體驗(yàn)】基于openCV的貓臉識(shí)別

    本文主要介紹如何基于openCV來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的貓臉識(shí)別應(yīng)用。 一、基礎(chǔ)準(zhǔn)備 首先需要安裝openCV,因?yàn)閜ython版的方便點(diǎn),所以直接安裝python版openCV,通過(guò)命令su
    發(fā)表于 09-24 23:50