一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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構(gòu)建簡(jiǎn)單的繪圖應(yīng)用程序

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

該應(yīng)用程序?qū)⒂兴膫€(gè)軌道欄:三個(gè)將用于更改顏色(B,G,R),第四個(gè)將用于選擇在矩形,圓形,直線或自由線之間。

也可以將軌跡欄用作開(kāi)關(guān)。默認(rèn)情況下,OpenCV沒(méi)有按鈕功能,但我們可以將軌跡欄用作按鈕。

我們可以在這個(gè)應(yīng)用程序中使用的另一個(gè)有用的功能是鼠標(biāo)回調(diào)函數(shù),它將在鼠標(biāo)事件發(fā)生時(shí)執(zhí)行。

我們可以使用不同的形狀使用我們的OpenCV繪圖應(yīng)用程序繪制。

Python代碼

以下是用于創(chuàng)建簡(jiǎn)單繪畫(huà)應(yīng)用程序的完整Python代碼:

import math

import cv2

def nothing(x):

pass

# Load an image

img = cv2.imread(‘obama.jpg’)

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

# Create trackbars for color change

cv2.createTrackbar(‘R’,‘image’,0,255,nothing)

cv2.createTrackbar(‘G’,‘image’,0,255,nothing)

cv2.createTrackbar(‘B’,‘image’,0,255,nothing)

# Create trackbars for drawing shapes

cv2.createTrackbar(‘Select’, ‘image’,0,3,nothing)

drawing = False # true if mouse is pressed

ix,iy = -1,-1

# mouse callback function

def draw(event,x,y,flags,param):

global ix,iy,drawing

if event == cv2.EVENT_LBUTTONDOWN:

drawing = True

ix,iy = x,y

elif event == cv2.EVENT_MOUSEMOVE:

if drawing == True:

if s == 3:

cv2.circle(img,(x,y),5,(b, g, r),-1)

elif event == cv2.EVENT_LBUTTONUP:

if drawing == True:

if s == 0:

cv2.rectangle(img,(ix,iy),(x,y),(b, g, r),5)

elif s == 1:

cv2.circle(img,(int((ix+x)/2), int((iy+y)/2)),int(math.sqrt( ((ix-x)**2)+((iy-y)**2) )),(b, g, r),5)

elif s == 2:

cv2.line(img,(ix,iy),(x,y),(b, g, r),5)

drawing = False

cv2.setMouseCallback(‘image’,draw)

while(1):

cv2.imshow(‘image’,img)

k = cv2.waitKey(1) & 0xFF

if k == 27:

break

# get current positions of four trackbars

r = cv2.getTrackbarPos(‘R’,‘image’)

g = cv2.getTrackbarPos(‘G’,‘image’)

b = cv2.getTrackbarPos(‘B’,‘image’)

s = cv2.getTrackbarPos(‘Select’,‘image’)

cv2.destroyAllWindows()

閱讀圖像

函數(shù) cv2.imread()用于讀取圖像,其參數(shù)是圖像的名稱(chēng)。如果圖像在工作目錄中,只需寫(xiě)入圖像的名稱(chēng)。否則,您將必須提供圖像的完整路徑。

我們將創(chuàng)建一個(gè)窗口并將其標(biāo)記為“圖像”。所有軌跡都將附加到此窗口。

img = cv2.imread(‘obama.jpg’)

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

創(chuàng)建軌跡欄

要?jiǎng)?chuàng)建軌跡欄,我們使用 cv2.createTrackbar()函數(shù),它有五個(gè)參數(shù):

軌跡欄名稱(chēng)

它所附加的窗口名稱(chēng)

默認(rèn)值

最大值

回調(diào)函數(shù)(每次跟蹤欄值更改時(shí)執(zhí)行)

回調(diào)函數(shù)始終具有默認(rèn)參數(shù),即軌跡欄位置。在我們的例子中,函數(shù)什么都不做,所以我們只是傳遞。

我們?yōu)榧t色,綠色和藍(lán)色創(chuàng)建了三個(gè)軌跡欄。每個(gè)軌跡欄的默認(rèn)值為0,最大值為255,并將它們附加到名為“image”的窗口。

接下來(lái)我們需要?jiǎng)?chuàng)建一個(gè)軌跡欄,在矩形,圓形,直線之間進(jìn)行選擇和自由行,默認(rèn)值為0,最大值為3.我們將按如下方式設(shè)置值:

0:矩形

1:圓圈

2:直線

3:自由行

# Create trackbars for color change

cv2.createTrackbar(‘R’,‘image’,0,255,nothing)

cv2.createTrackbar(‘G’,‘image’,0,255,nothing)

cv2.createTrackbar(‘B’,‘image’,0,255,nothing)

# Create trackbars for drawing shapes

cv2.createTrackbar(‘Select’, ‘image’,0,3,nothing)

鼠標(biāo)回調(diào)函數(shù)

我們現(xiàn)在可以創(chuàng)建一個(gè)鼠標(biāo)回調(diào)函數(shù),該函數(shù)在發(fā)生鼠標(biāo)事件時(shí)執(zhí)行。鼠標(biāo)事件可以是與鼠標(biāo)相關(guān)的任何事件:左鍵向下,左鍵向上,左鍵雙擊等。

該函數(shù)為我們提供每個(gè)坐標(biāo)(x,y)鼠標(biāo)事件。通過(guò)這個(gè)事件和位置,我們可以做任何我們喜歡的事情。

創(chuàng)建一個(gè)鼠標(biāo)回調(diào)函數(shù)有一個(gè)特定的格式,在任何地方都是一樣的。它僅在功能方面有所不同。在我們的例子中,回調(diào)函數(shù)是繪制函數(shù),它將根據(jù)第四個(gè)軌跡欄的位置繪制矩形,圓形,直線或自由線。

def draw(event,x,y,flags,param):

global ix,iy,drawing

if event == cv2.EVENT_LBUTTONDOWN:

drawing = True

ix,iy = x,y

elif event == cv2.EVENT_MOUSEMOVE:

if drawing == True:

if s == 3:

cv2.circle(img,(x,y),5,(b, g, r),-1)

elif event == cv2.EVENT_LBUTTONUP:

if drawing == True:

if s == 0:

cv2.rectangle(img,(ix,iy),(x,y),(b, g, r),5)

elif s == 1:

cv2.circle(img,(int((ix+x)/2), int((iy+y)/2)),int(math.sqrt( ((ix-x)**2)+((iy-y)**2) )),(b, g, r),5)

elif s == 2:

cv2.line(img,(ix,iy),(x,y),(b, g, r),5)

drawing = False

cv2.setMouseCallback(‘image’,draw)

獲取軌跡欄位置

Cv2.getTrackbarPos()函數(shù)用于獲取軌跡欄的當(dāng)前位置。它所采用的第一個(gè)參數(shù)是我們之前創(chuàng)建的軌跡欄的名稱(chēng),第二個(gè)參數(shù)是它將附加到的窗口的名稱(chēng)。

# get current positions of four trackbars

r = cv2.getTrackbarPos(‘R’,‘image’)

g = cv2.getTrackbarPos(‘G’,‘image’)

b = cv2.getTrackbarPos(‘B’,‘image’)

s = cv2.getTrackbarPos(‘Select’,‘image’)

聲明:本文內(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)注

    31

    文章

    642

    瀏覽量

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

    關(guān)注

    120

    文章

    1910

    瀏覽量

    106746
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹(shù)莓派GUI應(yīng)用開(kāi)發(fā):從零到炫酷的魔法之旅!

    各位樹(shù)莓派的粉絲們!今天我要帶你們踏上一段神奇的旅程——探索樹(shù)莓派上GUI應(yīng)用的無(wú)限可能!你是不是覺(jué)得樹(shù)莓派只能用來(lái)跑跑服務(wù)器、做個(gè)簡(jiǎn)單的項(xiàng)
    的頭像 發(fā)表于 04-04 09:03 ?317次閱讀
    <b class='flag-5'>樹(shù)莓</b>派GUI應(yīng)用開(kāi)發(fā):從零到炫酷的魔法之旅!

    為L(zhǎng)SDK構(gòu)建opencv時(shí)遇到的問(wèn)題求解

    我正在嘗試使用 flex-builder 來(lái)運(yùn)行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV我的 sdk.yml 文件中,我將 opencv
    發(fā)表于 03-26 08:26

    樹(shù)莓派上構(gòu)建和部署 Node.js 項(xiàng)目

    探索RaspberryPi上構(gòu)建和部署Node.js項(xiàng)目的最佳實(shí)踐。通過(guò)我們的專(zhuān)業(yè)提示和技巧,克服常見(jiàn)挑戰(zhàn),使您的項(xiàng)目順利運(yùn)行。去年圣誕節(jié),我收到了一份極其令人著迷的禮物,它占據(jù)了我許多周末的時(shí)間
    的頭像 發(fā)表于 03-25 09:44 ?127次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派上</b><b class='flag-5'>構(gòu)建</b>和部署 Node.js 項(xiàng)目

    如何在 Raspberry Pi AI Camera 上構(gòu)建為開(kāi)發(fā)人員提供實(shí)時(shí)的智能應(yīng)用程序!

    在這篇特邀文章中,我們的合作伙伴索尼公司的雷蒙娜-雷納(RamonaRayner)將向您展示如何快速探索不同的模型和人工智能功能,以及如何在RaspberryPi人工智能相機(jī)的基礎(chǔ)上輕松構(gòu)建應(yīng)用程序
    的頭像 發(fā)表于 03-25 09:37 ?160次閱讀
    如何在 Raspberry Pi AI Camera 上<b class='flag-5'>構(gòu)建</b>為開(kāi)發(fā)人員提供實(shí)時(shí)的智能<b class='flag-5'>應(yīng)用程序</b>!

    零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?

    在這篇文章中,我將為你簡(jiǎn)要介紹Python程序是什么、Python程序可以用來(lái)做什么,以及如何在RaspberryPi上編寫(xiě)和運(yùn)行一個(gè)簡(jiǎn)單的Python程序。什么是Python
    的頭像 發(fā)表于 03-25 09:27 ?330次閱讀
    零基礎(chǔ)入門(mén):如何在<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派上</b>編寫(xiě)和運(yùn)行Python<b class='flag-5'>程序</b>?

    樹(shù)莓派云OS哪個(gè)最受歡迎?來(lái)看看Github Star 28.9k的項(xiàng)目!

    應(yīng)用程序,簡(jiǎn)化管理過(guò)程,位于現(xiàn)有操作系統(tǒng)之上,將設(shè)備轉(zhuǎn)變?yōu)樽酝泄軝C(jī)器。2.安裝與訪問(wèn):樹(shù)莓派上安裝只需運(yùn)行bash腳本,安裝完成后通過(guò)終端給出的IP地址
    的頭像 發(fā)表于 03-25 09:21 ?231次閱讀
    <b class='flag-5'>樹(shù)莓</b>派云OS哪個(gè)最受歡迎?來(lái)看看Github Star 28.9k的項(xiàng)目!

    樹(shù)莓派上設(shè)置 DeepSeek R1:2025 年離線人工智能的未來(lái)

    概述《樹(shù)莓派上設(shè)置DeepSeekR1:2025年離線人工智能的未來(lái)》是一份前瞻性技術(shù)指南,聚焦中國(guó)AI初創(chuàng)公司DeepSeek于2023年底推出的開(kāi)源模型DeepSeekR1。該模型旨在通過(guò)提供
    的頭像 發(fā)表于 03-25 09:20 ?445次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派上</b>設(shè)置 DeepSeek R1:2025 年離線人工智能的未來(lái)

    不要等Manus的邀請(qǐng)碼了,樹(shù)莓派上也能實(shí)現(xiàn) AI Agent !

    本文討論了Manus、OpenManus、CrewAI這三款A(yù)IAgent產(chǎn)品的特點(diǎn)、適用場(chǎng)景,并重點(diǎn)介紹了如何用CrewAI樹(shù)莓派上運(yùn)行多LLM代理,還探討了AIAgent發(fā)展帶來(lái)的思考。關(guān)鍵
    的頭像 發(fā)表于 03-25 09:19 ?446次閱讀
    不要等Manus的邀請(qǐng)碼了,<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派上</b>也能實(shí)現(xiàn) AI Agent !

    人臉識(shí)別指南:如何在樹(shù)莓派上安裝和設(shè)置 Dlib

    學(xué)習(xí)如何在樹(shù)莓派上安裝Dlib并配置人臉識(shí)別功能,為您的AI項(xiàng)目奠定基礎(chǔ)。樹(shù)莓派上安裝Dlib的詳細(xì)步驟要為
    的頭像 發(fā)表于 03-24 17:31 ?443次閱讀
    人臉識(shí)別指南:如何在<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派上</b>安裝和設(shè)置 Dlib

    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)應(yīng)用程序的新簡(jiǎn)單方法

    我們推出了一款用于發(fā)布數(shù)據(jù)應(yīng)用程序的開(kāi)創(chuàng)性解決方案:具有 Panel 應(yīng)用程序部署功能的 Anaconda Cloud Notebooks。Panel 是一種開(kāi)源 Python 工具,現(xiàn)在
    的頭像 發(fā)表于 01-17 11:39 ?318次閱讀
    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)<b class='flag-5'>應(yīng)用程序</b>的新<b class='flag-5'>簡(jiǎn)單</b>方法

    GPIO樹(shù)莓派中的應(yīng)用

    直接控制和讀取外部硬件設(shè)備的狀態(tài)。 1. GPIO簡(jiǎn)介 GPIO是樹(shù)莓派上用于與外部世界交互的一組引腳。這些引腳可以被配置為輸入或輸出模式,從而實(shí)現(xiàn)對(duì)外部設(shè)備的控制和數(shù)據(jù)讀取。樹(shù)莓派的GPIO引腳包括數(shù)字和模擬兩種類(lèi)型,其中數(shù)字
    的頭像 發(fā)表于 01-09 09:41 ?598次閱讀

    如何在樹(shù)莓派上安裝Docker容器

    1. 準(zhǔn)備工作 開(kāi)始之前,請(qǐng)確保你的樹(shù)莓派已經(jīng)安裝了最新版本的Raspberry Pi OS。如果沒(méi)有,請(qǐng)按照以下步驟操作: 下載最新的Raspberry Pi OS鏡像:訪問(wèn) Raspberry
    的頭像 發(fā)表于 11-11 11:38 ?1669次閱讀

    【龍芯2K0300蜂鳥(niǎo)板試用】5 搭建opencv開(kāi)發(fā)環(huán)境

    用來(lái)調(diào)試程序的可靠性,基本方法與loongxix相似,最大的不同是編譯器的選擇不同,在此略過(guò) buildroot搭建 最終的應(yīng)用程序是要跑板子,準(zhǔn)備地說(shuō),是跑buildroot制作
    發(fā)表于 08-27 15:08

    可以單個(gè)esp8266上安裝兩個(gè)NON OS SDK應(yīng)用程序嗎?

    一個(gè)簡(jiǎn)單的問(wèn)題。我可以單個(gè) esp8266 上安裝兩個(gè) NON OS SDK 應(yīng)用程序嗎?我的自定義引導(dǎo)加載程序(包括 os libs)和我的自定義
    發(fā)表于 07-19 07:28

    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 ?1811次閱讀