女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣在樹莓派上使用OpenCV構建簡單的繪圖應用程序

454398 ? 來源:工程師吳畏 ? 2019-07-26 11:30 ? 次閱讀

該應用程序將有四個軌道欄:三個將用于更改顏色(B,G,R),第四個將用于選擇在矩形,圓形,直線或自由線之間。

也可以將軌跡欄用作開關。默認情況下,OpenCV沒有按鈕功能,但我們可以將軌跡欄用作按鈕。

我們可以在這個應用程序中使用的另一個有用的功能是鼠標回調函數,它將在鼠標事件發生時執行。

我們可以使用不同的形狀使用我們的OpenCV繪圖應用程序繪制。

Python代碼

以下是用于創建簡單繪畫應用程序的完整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()

閱讀圖像

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

我們將創建一個窗口并將其標記為“圖像”。所有軌跡都將附加到此窗口。

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

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

創建軌跡欄

要創建軌跡欄,我們使用 cv2.createTrackbar()函數,它有五個參數:

軌跡欄名稱

它所附加的窗口名稱

默認值

最大值

回調函數(每次跟蹤欄值更改時執行)

回調函數始終具有默認參數,即軌跡欄位置。在我們的例子中,函數什么都不做,所以我們只是傳遞。

我們為紅色,綠色和藍色創建了三個軌跡欄。每個軌跡欄的默認值為0,最大值為255,并將它們附加到名為“image”的窗口。

接下來我們需要創建一個軌跡欄,在矩形,圓形,直線之間進行選擇和自由行,默認值為0,最大值為3.我們將按如下方式設置值:

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)

鼠標回調函數

我們現在可以創建一個鼠標回調函數,該函數在發生鼠標事件時執行。鼠標事件可以是與鼠標相關的任何事件:左鍵向下,左鍵向上,左鍵雙擊等。

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

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

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()函數用于獲取軌跡欄的當前位置。它所采用的第一個參數是我們之前創建的軌跡欄的名稱,第二個參數是它將附加到的窗口的名稱。

# 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’)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42434
  • 樹莓派
    +關注

    關注

    121

    文章

    1942

    瀏覽量

    106982
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    從初學到進階:樹莓派上最適合你的代碼編輯器推薦!

    安裝樹莓派操作系統后,你就可以使用Python、Scratch、Java、C/C++等受Linux支持的多種編程語言進行編程了。其中,Python是樹莓派上最受歡迎的編程語言。
    的頭像 發表于 05-15 16:20 ?130次閱讀
    從初學到進階:<b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>最適合你的代碼編輯器推薦!

    樹莓派GUI應用開發:從零到炫酷的魔法之旅!

    各位樹莓派的粉絲們!今天我要帶你們踏上一段神奇的旅程——探索樹莓派上GUI應用的無限可能!你是不是覺得樹莓派只能用來跑跑服務器、做個簡單的項
    的頭像 發表于 04-04 09:03 ?387次閱讀
    <b class='flag-5'>樹莓</b>派GUI應用開發:從零到炫酷的魔法之旅!

    為LSDK構建opencv時遇到的問題求解

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

    樹莓派上構建和部署 Node.js 項目

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

    如何在 Raspberry Pi AI Camera 上構建為開發人員提供實時的智能應用程序

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

    零基礎入門:如何在樹莓派上編寫和運行Python程序

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Python程序。什么是Python
    的頭像 發表于 03-25 09:27 ?483次閱讀
    零基礎入門:如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>編寫和運行Python<b class='flag-5'>程序</b>?

    樹莓派云OS哪個最受歡迎?來看看Github Star 28.9k的項目!

    應用程序,簡化管理過程,位于現有操作系統之上,將設備轉變為自托管機器。2.安裝與訪問:樹莓派上安裝只需運行bash腳本,安裝完成后通過終端給出的IP地址
    的頭像 發表于 03-25 09:21 ?312次閱讀
    <b class='flag-5'>樹莓</b>派云OS哪個最受歡迎?來看看Github Star 28.9k的項目!

    樹莓派上設置 DeepSeek R1:2025 年離線人工智能的未來

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

    不要等Manus的邀請碼了,樹莓派上也能實現 AI Agent !

    本文討論了Manus、OpenManus、CrewAI這三款AIAgent產品的特點、適用場景,并重點介紹了如何用CrewAI樹莓派上運行多LLM代理,還探討了AIAgent發展帶來的思考。關鍵
    的頭像 發表于 03-25 09:19 ?573次閱讀
    不要等Manus的邀請碼了,<b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>也能實現 AI Agent !

    人臉識別指南:如何在樹莓派上安裝和設置 Dlib

    學習如何在樹莓派上安裝Dlib并配置人臉識別功能,為您的AI項目奠定基礎。樹莓派上安裝Dlib的詳細步驟要為
    的頭像 發表于 03-24 17:31 ?586次閱讀
    人臉識別指南:如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派上</b>安裝和設置 Dlib

    ANACONDA——關于發布數據應用程序的新簡單方法

    我們推出了一款用于發布數據應用程序的開創性解決方案:具有 Panel 應用程序部署功能的 Anaconda Cloud Notebooks。Panel 是一種開源 Python 工具,現在
    的頭像 發表于 01-17 11:39 ?371次閱讀
    ANACONDA——關于發布數據<b class='flag-5'>應用程序</b>的新<b class='flag-5'>簡單</b>方法

    GPIO樹莓派中的應用

    直接控制和讀取外部硬件設備的狀態。 1. GPIO簡介 GPIO是樹莓派上用于與外部世界交互的一組引腳。這些引腳可以被配置為輸入或輸出模式,從而實現對外部設備的控制和數據讀取。樹莓派的GPIO引腳包括數字和模擬兩種類型,其中數字
    的頭像 發表于 01-09 09:41 ?714次閱讀

    如何在樹莓派上安裝Docker容器

    1. 準備工作 開始之前,請確保你的樹莓派已經安裝了最新版本的Raspberry Pi OS。如果沒有,請按照以下步驟操作: 下載最新的Raspberry Pi OS鏡像:訪問 Raspberry
    的頭像 發表于 11-11 11:38 ?1741次閱讀

    【龍芯2K0300蜂鳥板試用】5 搭建opencv開發環境

    用來調試程序的可靠性,基本方法與loongxix相似,最大的不同是編譯器的選擇不同,在此略過 buildroot搭建 最終的應用程序是要跑板子,準備地說,是跑buildroot制作
    發表于 08-27 15:08

    可以單個esp8266上安裝兩個NON OS SDK應用程序嗎?

    一個簡單的問題。我可以單個 esp8266 上安裝兩個 NON OS SDK 應用程序嗎?我的自定義引導加載程序(包括 os libs)和我的自定義
    發表于 07-19 07:28