国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【跟官網(wǎng)學(xué)opencv-python】筆記1.3:opencv鼠標繪圖 cv2.setMouseCallback()

這篇具有很好參考價值的文章主要介紹了【跟官網(wǎng)學(xué)opencv-python】筆記1.3:opencv鼠標繪圖 cv2.setMouseCallback()。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

目標

函數(shù)詳解

1、cv2.setMouseCallback()鼠標回調(diào)函數(shù)

2、鼠標事件簡介

代碼演示

?編輯

應(yīng)用演示

運行效果

參考


前言

跟著官網(wǎng)學(xué)習(xí)才是基礎(chǔ)入門的最佳選擇,下文是opencv-python官網(wǎng)的學(xué)習(xí)記錄及擴展!

目標

學(xué)習(xí)函數(shù)cv2.setMouseCallback()并使用鼠標繪制不同圖形(矩形、多邊形等)。

函數(shù)詳解

1、cv2.setMouseCallback()鼠標回調(diào)函數(shù)

cv2.setMouseCallback(windowName, onMouse, param=None)
windowName ?窗體名稱
onMouse ?鼠標事件的回調(diào)函數(shù)
param?? ?傳遞給回調(diào)函數(shù)的可選參數(shù)

2、鼠標事件簡介

查看所有被支持的鼠標事件
import cv2
events = [i for i in dir(cv2) if 'EVENT' in i]
print (events)

鼠標事件標志 MouseEventFlags

'EVENT_FLAG_ALTKEY' ? ? 表示按下 ALT 鍵.
'EVENT_FLAG_CTRLKEY' ? ?表示按下 CTRL 鍵.
'EVENT_FLAG_SHIFTKEY' ? 表示按下 SHIFT 鍵.
'EVENT_FLAG_LBUTTON' ? ?表示鼠標左鍵已按下.
'EVENT_FLAG_MBUTTON' ? ?表示鼠標中鍵已按下.
'EVENT_FLAG_RBUTTON' ? ?表示鼠標右鍵已按下.

鼠標事件類型?MouseEventTypes

'EVENT_LBUTTONDBLCLK' ??表示雙擊鼠標左鍵.
'EVENT_LBUTTONDOWN' 表示按下鼠標左鍵.
'EVENT_LBUTTONUP' ??表示釋放鼠標左鍵.

'EVENT_MBUTTONDBLCLK' ??表示雙擊鼠標中鍵.
'EVENT_MBUTTONDOWN' 表示按下鼠標中鍵.
'EVENT_MBUTTONUP' ??表示釋放鼠標中鍵.

'EVENT_MOUSEHWHEEL' 正值和負值分別表示向右和向左滾動.
'EVENT_MOUSEMOVE' ??指示鼠標指針已移到窗口上.
'EVENT_MOUSEWHEEL' ?正值和負值分別表示向前和向后滾動.

'EVENT_RBUTTONDBLCLK' ??表示雙擊鼠標右鍵.
'EVENT_RBUTTONDOWN' 表示按下鼠標右鍵.
'EVENT_RBUTTONUP' ??表示釋放鼠標右鍵.

代碼演示

在圖片上雙擊過的位置繪制一個圓,創(chuàng)建鼠標事件回調(diào)函數(shù),當鼠標事件發(fā)生時就會被執(zhí)行,
比如左鍵按下,松開,左鍵雙擊等。
可以通過鼠標事件獲得相對應(yīng)的圖片上的坐標,根據(jù)這些信息可以做想做的事。
所有鼠標事件回調(diào)函數(shù)都有一個統(tǒng)一的格式,不同的地方是被調(diào)用后的功能。

import numpy as np
import cv2 as cv
# mouse callback function
def draw_circle(event,x,y,flags,param):
? ? if event == cv.EVENT_LBUTTONDBLCLK:
? ? ? ? cv.circle(img,(x,y),100,(255,0,0),-1)
# Create a black image, a window and bind the function to window
img = np.zeros((512,512,3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image',draw_circle)
while(1):
? ? cv.imshow('image',img)
? ? if cv.waitKey(20) & 0xFF == 27:
? ? ? ? break
cv.destroyAllWindows()

cv2.setmousecallback,OpenCV-Python,opencv,python,計算機視覺

?

應(yīng)用演示

通過鍵盤按鍵‘m'切換繪圖類型曲線或矩形,并使用鼠標繪制。

import cv2
import numpy as np

# 當鼠標按下時為True
drawing = False
# 如果mode為true時繪制矩形,按下'm'變成繪制曲線
mode = True
ix, iy = -1, -1


# 創(chuàng)建回調(diào)函數(shù)
def draw_circle(event, x, y, flags, param):
    global ix, iy, drawing, mode
    # 當按下左鍵時返回起始位置坐標
    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        ix, iy = x, y
    # 當左鍵按下并移動時繪制圖形,event可以查看移動,flag查看是否按下
    elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
        if drawing == True:
            if mode == True:
                cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)

            else:
                # 繪制圓圈,小圓點連在一起就成了線,3代表筆畫的粗細
                cv2.circle(img, (x, y), 3, (0, 0, 255), -1)

    # 當鼠標松開時停止繪圖
    elif event == cv2.EVENT_LBUTTONUP:
        drawing == False
        print(ix, iy, x, y)

'''
下面把回調(diào)函數(shù)與OpenCV窗口綁定在一起,在主循環(huán)中獎'm'鍵與模式轉(zhuǎn)換綁定在一起
'''
img = cv2.imread('../Resources/lena.png')#np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)
while (1):
    cv2.imshow('image', img)
    k = cv2.waitKey(1)
    if k == ord('m'):
        mode = not mode
    elif k == ord('q') or k == 27:
        break
cv2.destroyAllWindows()

運行效果

下圖為代碼運行效果,通過鼠標在圖像上繪制矩形和曲線

cv2.setmousecallback,OpenCV-Python,opencv,python,計算機視覺

?

參考

OpenCV: OpenCV-Python Tutorials

學(xué)習(xí)、進步、堅持。。。內(nèi)容不間斷更新中。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-775122.html

到了這里,關(guān)于【跟官網(wǎng)學(xué)opencv-python】筆記1.3:opencv鼠標繪圖 cv2.setMouseCallback()的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 解決opencv-python 安裝報錯 Could not build wheels for opencv-python

    但是發(fā)現(xiàn)更新完了之后還是沒用,因為主要原因是如果直接安裝opencv默認安裝最新版,此時找一個python3.6支持的版本就行了,如4.3.0.38,使用如下命令即可成功安裝

    2024年02月16日
    瀏覽(53)
  • Python:安裝opencv-python出錯問題ERROR: Could not build wheels for opencv-python

    Python:安裝opencv-python出錯問題ERROR: Could not build wheels for opencv-python

    筆者在安裝opencv-python的過程中遇到了如下錯誤 在安裝opencv-python的過程,筆者直接通過pip命令進行安裝,遇到了如下問題 命令 問題 直接使用上述命令安裝的是最新版本,挑一個別的版本的opencv-python即可解決上述問題 使用命令如下 問題解決

    2024年02月11日
    瀏覽(28)
  • 安裝opencv-python

    安裝opencv-python

    1.由于之前pip install --upgrade pip出錯了,導(dǎo)致Anaconda中Scripts中pip.exe出錯 解決方式:python -m ensurepip --default-pip,獲得可行的pip.exe 可行的升級pip的方式:python -m pip install --upgrade pip 2.安裝opencv-python 嘗試從官網(wǎng)安裝,官網(wǎng)提示需要更新pip 但是更新出錯了,于是有了1問題,pip.exe不

    2024年02月06日
    瀏覽(21)
  • opencv-python 降噪

    opencv-python 降噪

    定義 圖像噪聲是指存在于圖像數(shù)據(jù)中的 不必要的或多余的干擾信息 。噪聲的存在嚴重影響了圖像的質(zhì)量,因此在圖像增強處理和分類處理之前,必須予以糾正。 圖像中各種妨礙人們對其信息接受的因素即可稱為圖像噪聲 。噪聲在理論上可以定義為“不可預(yù)測,只能用概率

    2024年02月03日
    瀏覽(21)
  • opencv-python安裝

    opencv-python安裝

    OpenCV就是學(xué)習(xí)計算機視覺的過程中經(jīng)常用到的工具,opencv降低了計算機視覺的學(xué)習(xí)門檻。隨著機器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù)的發(fā)展,Python龐大的擴展庫為Python用戶在編程過程中提供了極大的便利,opencv-python便是其中一員。在實際使用opencv-python擴展庫的過程中,更多的讀者關(guān)心

    2024年02月04日
    瀏覽(26)
  • opencv-python版本問題

    opencv-python版本問題

    opencv庫有兩種,一種是 opencv-python ,另一種是 opencv-contrib-python 。前者是基礎(chǔ)庫,后者則是在前者基礎(chǔ)上加了一些contrib module(視覺處理一般用這個)。 安裝好OpenCV庫,想著先在OpenCV的瀚海里扎兩個猛子。沒成想,一頭扎下去便撞到石頭上。 如下圖,在鍵入cv2.imread()時,不僅

    2024年02月13日
    瀏覽(20)
  • OpenCV-Python(21):OPenCV查找及繪制輪廓

    OpenCV-Python(21):OPenCV查找及繪制輪廓

    1.1 目標 理解什么是輪廓 學(xué)習(xí)掌握找輪廓、繪制輪廓等 學(xué)習(xí)使用cv2.findContours()、cv2.drawContours()函數(shù)的用法 1.2?什么是輪廓 ????????在OpenCV中,輪廓是 圖像中連續(xù)的邊界線的曲線,具有相同的顏色或者灰度,用于表示物體的形狀 。輪廓在圖像處理和計算機視覺中非常重要

    2024年01月18日
    瀏覽(28)
  • OpenCv-Python圖像特征識別

    OpenCv-Python圖像特征識別

    本練習(xí)學(xué)習(xí)了OpenCv-Python關(guān)于圖像特征識別的一些算法,算法理解起來較為困難,但函數(shù)用起來上手比較快,主要要明白函數(shù)的輸入輸出的含義。 雖然算法理解不容易,但程序還算有趣,輸入是一個完整的圖片和一組圖片碎片,如下圖,然后經(jīng)過算法計算,把碎片匹配到正確

    2024年02月07日
    瀏覽(83)
  • opencv-python常用函數(shù)匯總

    opencv-python常用函數(shù)匯總

    環(huán)境配置地址 Anaconda:https://www.anaconda.com/download/ Python_whl:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 代碼如下(示例): cv2.VideoCapture可以捕獲攝像頭,用數(shù)字來控制不同的設(shè)備,例如0,1。 如果是視頻文件,直接指定好路徑即可。 BORDER_REPLICATE:復(fù)制法,也就是復(fù)制最邊緣像素。

    2024年02月07日
    瀏覽(18)
  • openCV-python模板匹配(旋轉(zhuǎn))

    openCV-python模板匹配(旋轉(zhuǎn))

    本文將介紹使用OpenCV實現(xiàn)多角度模板匹配的詳細步驟 + 代碼。 熟悉OpenCV的朋友肯定都知道OpenCV自帶的模板匹配matchTemplate方法是不支持旋轉(zhuǎn)的,也就是說當目標和模板有角度差異時匹配常常會失敗,可能目標只是輕微的旋轉(zhuǎn),匹配分數(shù)就會下降很多,導(dǎo)致匹配精度下降甚至匹

    2024年02月01日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包