python+opencv鼠标操作以及制作调色板并画图
2016-04-07 17:02
561 查看
鼠标操作:
跟随鼠标移动进行绘制矩形或者画圆
制作调色板:
制作一个画板,可以选择颜色,然后移动鼠标画图:
#!/usr/bin/env python
import numpy as np
import cv2
drawing = False
mode = True
ix, iy = -1, -1
def def_func(x):
pass
def draw_circle(event, x, y, flags, param):
r = cv2.getTrackbarPos('R', 'image')
g = cv2.getTrackbarPos('G', 'image')
b = cv2.getTrackbarPos('B', 'image')
color = (b,g,r)
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN:
print 'left button down'
drawing = True
ix, iy = x,y
#elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
elif event == cv2.EVENT_MOUSEMOVE:
print 'mouse move'
if drawing == True:
if mode == True:
cv2.rectangle(img, (ix, iy), (x,y), color, -1)
else:
cv2.circle(img, (x, y), 10, color, -1)
elif event == cv2.EVENT_LBUTTONUP:
print 'left button up'
drawing = False
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,def_func)
cv2.createTrackbar('G','image',0,255,def_func)
cv2.createTrackbar('B','image',0,255,def_func)
cv2.setMouseCallback('image', draw_circle)
while(True):
cv2.imshow('image', img)
k = cv2.waitKey(1)&0xff
if k == ord('m'):
print 'you typed key m'
mode = not mode
elif k == 27:
break
cv2.destroyAllWindows()
#!/usr/bin/env python import numpy as np import cv2 events=[i for i in dir(cv2) if 'EVENT' in i] #events=[i for i in dir(cv2)] print events def draw_circle(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDBLCLK: cv2.circle(img, (x, y), 100, (255,0,0), -1) img = np.zeros((512,512,3), np.uint8) cv2.namedWindow('image') cv2.setMouseCallback('image', draw_circle) while(True): cv2.imshow('image', img) if cv2.waitKey(20)&0xff == 27: break cv2.deltroyAllWindows()
跟随鼠标移动进行绘制矩形或者画圆
#!/usr/bin/env python 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 if event == cv2.EVENT_LBUTTONDOWN: print 'left button down' drawing = True ix, iy = x,y #elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON: elif event == cv2.EVENT_MOUSEMOVE: print 'mouse move' if drawing == True: if mode == True: cv2.rectangle(img, (ix, iy), (x,y), (0,255,0), -1) else: cv2.circle(img, (x, y), 10, (255,0,0), -1) elif event == cv2.EVENT_LBUTTONUP: print 'left button up' drawing = False img = np.zeros((512,512,3), np.uint8) cv2.namedWindow('image') cv2.setMouseCallback('image', draw_circle) while(True): cv2.imshow('image', img) k = cv2.waitKey(1)&0xff if k == ord('m'): print 'you typed key m' mode = not mode elif k == 27: break
制作调色板:
#!/usr/bin/env python import numpy as np import cv2 def def_func(x): pass img = np.zeros((512,512,3), np.uint8) cv2.namedWindow('image') cv2.createTrackbar('R','image',0,255,def_func) cv2.createTrackbar('G','image',0,255,def_func) cv2.createTrackbar('B','image',0,255,def_func) switch = '0:OFF\n1:ON' cv2.createTrackbar(switch,'image',0,1,def_func) while(True): cv2.imshow('image', img) k = cv2.waitKey(1)&0xff if k == 27: break r = cv2.getTrackbarPos('R', 'image') g = cv2.getTrackbarPos('G', 'image') b = cv2.getTrackbarPos('B', 'image') s = cv2.getTrackbarPos(switch, 'image') if s == 0: img[:] = 0 else: img[:] = [b,g,r] cv2.destroyAllWindows()
制作一个画板,可以选择颜色,然后移动鼠标画图:
#!/usr/bin/env python
import numpy as np
import cv2
drawing = False
mode = True
ix, iy = -1, -1
def def_func(x):
pass
def draw_circle(event, x, y, flags, param):
r = cv2.getTrackbarPos('R', 'image')
g = cv2.getTrackbarPos('G', 'image')
b = cv2.getTrackbarPos('B', 'image')
color = (b,g,r)
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN:
print 'left button down'
drawing = True
ix, iy = x,y
#elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
elif event == cv2.EVENT_MOUSEMOVE:
print 'mouse move'
if drawing == True:
if mode == True:
cv2.rectangle(img, (ix, iy), (x,y), color, -1)
else:
cv2.circle(img, (x, y), 10, color, -1)
elif event == cv2.EVENT_LBUTTONUP:
print 'left button up'
drawing = False
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,def_func)
cv2.createTrackbar('G','image',0,255,def_func)
cv2.createTrackbar('B','image',0,255,def_func)
cv2.setMouseCallback('image', draw_circle)
while(True):
cv2.imshow('image', img)
k = cv2.waitKey(1)&0xff
if k == ord('m'):
print 'you typed key m'
mode = not mode
elif k == 27:
break
cv2.destroyAllWindows()
相关文章推荐
- leetcode [python] 【144】 Binary Tree Preorder Traversal
- 大顶堆进行升序排序的python实现
- 初学python(对比java语言不同) 第四篇
- leetcode [python] 【338】Counting Bits
- [LeetCode]题解(python):139-Word Break
- python爬虫系列文章
- A Byte of Python 笔记(11)异常:try..except、try..finally
- python 学习笔记1(序列;if/for/while;函数;类)
- [LeetCode]题解(python):138-Copy List with Random Pointer
- [LeetCode]题解(python):137-Single Number II
- Sublime Text 3 配置python开发环境遇见的问题
- Win7下Python2.7环境安装paramiko模块
- python 列表、元组、字典
- 初学python(对比java语言不同) 第三篇
- Python SMTP发送邮件 - 带附件
- 在ipython notebook 上测试 ImportError: No module named _caffe
- Python3.4 用 BeautifulSoup 爬虫 Navigable String类型转换
- python学习笔记(xlwt/xlrd下载安装)
- Python列表
- Python通用序列操作