1. 程式人生 > >opencv-python(3):把滑鼠當做畫筆

opencv-python(3):把滑鼠當做畫筆

haohaoxuexi
hahaha


本節學習的函式是:cv2.setMouseCallback()

滑鼠事件可以是滑鼠上的任何動作,比如左鍵按下,左鍵鬆開,左鍵雙擊等。我們可以通過滑鼠事件獲得與滑鼠對應的圖片上的座標。

1、滑鼠事件種類

程式碼:

import numpy as np
import cv2
events=[i for i in dir(cv2) if 'EVENT' in i]
print(events)
import numpy as np
import cv2
events=[i for i in dir(cv2) if 'EVENT' in i]
print(events)
輸出結果如下
['EVENT_FLAG_ALTKEY', 
'EVENT_FLAG_CTRLKEY', 
'EVENT_FLAG_LBUTTON', 
'EVENT_FLAG_MBUTTON', 
'EVENT_FLAG_RBUTTON', 
'EVENT_FLAG_SHIFTKEY', 
'EVENT_LBUTTONDBLCLK', 
'EVENT_LBUTTONDOWN', 
'EVENT_LBUTTONUP', 
'EVENT_MBUTTONDBLCLK', 
'EVENT_MBUTTONDOWN', 
'EVENT_MBUTTONUP', 
'EVENT_MOUSEHWHEEL', 
'EVENT_MOUSEMOVE', 
'EVENT_MOUSEWHEEL', 
'EVENT_RBUTTONDBLCLK', 
'EVENT_RBUTTONDOWN', 
'EVENT_RBUTTONUP']

它們的含義是:
CV_EVENT_MOUSEMOVE 0             滑動  
CV_EVENT_LBUTTONDOWN 1           左鍵點選  
CV_EVENT_RBUTTONDOWN 2           右鍵點選  
CV_EVENT_MBUTTONDOWN 3           中間點選  
CV_EVENT_LBUTTONUP 4             左鍵釋放  
CV_EVENT_RBUTTONUP 5             右鍵釋放  
CV_EVENT_MBUTTONUP 6             中間釋放  
CV_EVENT_LBUTTONDBLCLK 7         左鍵雙擊  
CV_EVENT_RBUTTONDBLCLK 8         右鍵雙擊  
CV_EVENT_MBUTTONDBLCLK 9         中間釋放

補:

cv2_EVENT_FLAG_LBUTTON 左鍵拖拽  
cv2_EVENT_FLAG_RBUTTON 右鍵拖拽  
cv2_EVENT_FLAG_MBUTTON 中間拖拽  

2、在雙擊的地方繪製圓

程式碼如下:

haohaoxuexi


import numpy as np
import cv2
def draw_circle(event,x,y,flags,param):
    if event==cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img,(x,y),60,(255,0,0),3)
#img=np.zeros((512,512,3),np.uint8)
img=cv2.imread('C:\\Users\\WLX\\Desktop\\2.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):
    cv2.imshow('image',img)
    if cv2.waitKey(20)&0xFF==27:
        break
cv2.imwrite('C:\\Users\\WLX\\Desktop\\fsf.jpg',img)
cv2.destroyAllWindows()


結果:

3、高階一點的示例

根據選擇模式選擇畫圈或者畫矩形

import numpy as np
import cv2
drawing=False
mode=True
ix,iy=-1,-1
def draw_circle(event,x,y,flags,param):
    global ix,iy,drawing,mode#global 全域性變數
    if event==cv2.EVENT_LBUTTONDOWN:
        drawing==True
        ix,iy=x,y
    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),3)
            else:
                cv2.circle(img,(x,y),3,(0,0,255),-1)
    elif event==cv2.EVENT_LBUTTONUP:
        drawing==False
        if mode==True:
            cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),3)
        else:
            cv2.circle(img,(x,y),5,(0,0,255),-1)        
img=cv2.imread('C:\\Users\\WLX\\Desktop\\2.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):
    cv2.imshow('image',img)
    k=cv2.waitKey(20)&0xFF
    if k==ord('m'):
        mode=not mode
    elif k==27:
        break
cv2.imwrite('C:\\Users\\WLX\\Desktop\\fsf.jpg',img)
cv2.destroyAllWindows()

結果:


fff

相關推薦

opencv-python(3):滑鼠當做畫筆

haohaoxuexihahaha 本節學習的函式是:cv2.setMouseCallback() 滑鼠事件可以是滑鼠上的任何動作,比如左鍵按下,左鍵鬆開,左鍵雙擊等。我們可以通過滑鼠事件獲得與滑鼠對應的圖片上的座標。 1、滑鼠事件種類 程式碼: import num

【翻譯】滑鼠當做一個畫筆

⚠️這個系列是自己瞎翻的,文法很醜,跳著跳著撿重要的部分翻,翻錯了不負責,就這樣。 ⚠️基於3.4.3,Mouse as a Paint-Brush,附原文。 目標  掌握Opencv中的滑鼠事件 你會學到這個方法 : cv.s

Opencv+Python(4):鼠標作為畫筆

b- 對象 tex wait nta 接下來 space with 活動 鼠標作為畫筆 目標 學習處理OpenCV中的鼠標事件 你將學習這些函數:cv2.setMouseCallback() 簡單的演示 在這裏,我們創建了一個簡單的應用程序,無論我們雙擊它,在

OpenCV-Python-(3)-影象預處理

影象預處理: cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) #邊界填充 cv2.add()                                               

python 3.6關於Opencv的安裝支持

內容 get 通過 title win 技術 測試 擴展 logs 1、安裝Numpy擴展 按照有些文章的內容,從http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下載對應版本的 “numpy?1.13.1+mkl?cp36

Windows python 3 安裝OpenCV

whl 適用於 spa .com ref python 技術 .whl uci 本文適用於想在window下使用python 3 的童鞋,安裝openCV 有問題的參考 一、你要確定自己的python版本是3.x,在命令行窗口輸入python 本人使用的是python 3

不要再vim當做Python文本編輯器了!用這個!

process ges 多人 pytho http .com 代碼編輯器 ffffff 窗口 許多人說,vim是最好的代碼編輯器,不管在哪種語言,不過,Python例外,Python shell自帶一個代碼編輯器。 使用方法: 打開Python shell: 點

OpenCV3.4.3官方資料翻譯(一)OpenCV-Python Tutorials

原英文地址:https://docs.opencv.org/3.4.3/d0/de3/tutorial_py_intro.html OpenCV OpenCV was started at Intel in 1999 by Gary Bradsky, and the first r

只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們1當做是第一個醜數。求按從小到大的順序的第N個醜數。

/* 思路: 通俗易懂的解釋: 首先從醜數的定義我們知道,一個醜數的因子只有2,3,5,那麼醜數p = 2 ^ x * 3 ^ y * 5 ^ z,換句話說一個醜數一定由另一個醜數乘以2或者乘以3或者乘以5得到,那麼我們從1開始乘以2,3,5,就得到2,3,5三個醜數,在從這

No.4 Python 3.5 安裝Opencv

Anaconda python3.5的環境中安裝python-opencv失敗 在cmd中使用pip安裝python-opencv pip install python-opencv 出現

opencv 垂直投影 python 3.6 opencv 3.3.1

import cv2import numpy as np# 灰度化讀取圖片image_1 = cv2.imread('12.jpg')image=cv2.cvtColor(image_1,cv2.COLOR_BGR2GRAY)  height, width = image.s

OpenCV(3.2)+Python(3.6)學習(基於官方API)(一)

1.1 Getting Started with Images   博主最近由於專案需求,需要學習OpenCV,在檢視並試驗了幾種語言之後決定用Python作為開發語言。剛開始學習也是各種網上找資料,但是網上的資料過於雜亂,最後還是覺得官方API最全面。所

.只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們1當做是第一個醜數。求按從小到大的順序的第N個醜數。

題目: 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 解題思路:選定第一個醜數1,根據醜數的定義,可知以後的醜數必然是在1的基礎上乘以2,乘以3,乘以5,

Opencv-Python 官方教程】3.Opencv畫圖函式

本節目標: 學會用Opencv畫不同的幾何形狀 將會學到以下幾個函式:cv2.line()、cv2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.putText() 所有上述函式,你將用到一些共同的引數如下 i

python 3.6下安裝opencv

老師又佈置了好多影象識別的大作業,以前都是用matlab做的,聽說opencv很火,就試著用它做下。就是這樣,每天在大作業的沉迷中無法自拔 !! 先說下我的環境: win10,64位(相信大多數都是)

Python 3實現各個Sheet另存為單獨的Excel

寫入 i+1 num desc () esc auth load dsd # -*- coding: utf-8 -*- # @Time : 2019/1/16 12:55 # @Author : Philly # @File : sdsd.

OpenCV Python教程(3)(4)(5): 直方圖的計算與顯示 形態學處理 初級濾波內

OpenCV Python教程(3、直方圖的計算與顯示) 本篇文章介紹如何用OpenCV Python來計算直方圖,並簡略介紹用NumPy和Matplotlib計算和繪製直方圖 直方圖的背景知識、用途什麼的就直接略過去了。這裡直接介紹方法。 計算並顯

日記:opencv python介面函式2.X版本和3.X版本變化

         在opencv3.X版本中,沒有了cv2.cv這一模組,其中對視訊屬性的讀取變化如下:          fps = capture.get(cv2.CAP_PROP_FPS)          size = (int(capture.get(cv2.CA

windows OpenCV 2.3.1/Opencv2.4.6 + Python 2.7配置

1 .下載 OpenCV 2.3.1 。文中下載了OpenCV-2.3.1-win-superpack (大概124MB,解壓後1G多)。他不需編譯,使用方便 下載地址  2. OpenCV-2.3.1-win-superpack.exe是自解壓檔案,直接執行。即可解壓。預設解壓到opencv資料夾裡。

python 3.6下安裝opencv 解決import cv2 問題(Windows+Python3.6(Anaconda3)+OpenCV3.4安裝配置)

目的: 解決import cv2問題 試了一下午,遇到一些錯誤,終於成功。 環境: win7/10,64位,python 3.6,Anaconda3(64-bit),想裝opencv3.4.0(最新版本) 遇到的錯誤: 1.因為之前在VS2015