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 1 左鍵拖拽
cv2_EVENT_FLAG_RBUTTON 2 右鍵拖拽
cv2_EVENT_FLAG_MBUTTON 4 中間拖拽
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