1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
3个回答
|
|
思路分析
类似于液晶触摸的书写,我们来研究下如何实现绘图功能。 本质上,绘图是绘制线条,曲线可以分解成很多直线,直线可以分解成很多点,因此,就先从绘制点开始。想法有了,可以开始着手了。 |
|
|
|
写出基本结构
由于Python的便捷性,先采用Python实现,不用太顾及语法问题。 下面先调出第一个版本的源码。 import cv2import numpy as np# 创建一个窗口cv2.namedWindow(‘image’)# 创建一个黑色图像img = np.zeros((800,600,3), np.uint8)# 定义一个回调函数,用于绘制图像def draw_point(event,x,y,flags,param): if event == cv2.EVENT_LBUTTONDOWN: cv2.circle(img,(x,y),20,(255,0,0),-1)# 将回调函数绑定到窗口上cv2.setMouseCallback(‘image’, draw_point)# 主循环显示图像while(True): cv2.imshow(‘image’,img) if (cv2.waitKey(1) == ord(‘q’)): breakcv2.destroyAllWindows()# 保存图像cv2.imwrite( |
|
|
|
在上一版本中,鼠标按下后,只能画一个点,在此情况下,需要改进为鼠标按下后,就一直画点,于是,改进后,就有了以下代码
import cv2 import numpy as np isMouseLBDown = Falsedef draw_circle(event,x,y,flags,param): print(event) global isMouseLBDown if event == cv2.EVENT_LBUTTONDOWN: # 检测到鼠标左键按下 print(“mouse down”) isMouseLBDown = True cv2.circle(img,(x,y),5,(255,0,0),-1) elif event == cv2.EVENT_LBUTTONUP: # 检测到鼠标左键抬起 isMouseLBDown = False print(“mouse up”) elif event == cv2.EVENT_MOUSEMOVE: # 如果鼠标按下并且鼠标在移动 if isMouseLBDown: print(“drawing”) cv2.circle(img,(x,y),5,(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(1) == ord(‘q’): break cv2.destroyAllWindows()cv2.imwrite(“OpenCV_Paint.png”, img) |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1073浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 03:52 , Processed in 1.866283 second(s), Total 82, Slave 63 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号