本文主要是介绍In our last example, we drew filled rectangle. You modify the code to draw an unfilled rectangle.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、last example
- 二、modify the code to draw an unfilled rectangle.
- 1.修改方法
- 第一步
- 第二步
前言
题目地址为:https://docs.opencv.org/4.x/db/d5b/tutorial_py_mouse_handling.html
题目内容:In our last example, we drew filled rectangle. You modify the code to draw an unfilled rectangle.
一、last example
完整代码如下:
import numpy as np
import cv2 as cv
drawing = False # true if mouse is pressed
mode = True # if True, draw rectangle. Press 'm' to toggle to curve
ix,iy = -1,-1
# mouse callback function
def draw_circle(event,x,y,flags,param):global ix,iy,drawing,modeif event == cv.EVENT_LBUTTONDOWN:drawing = Trueix,iy = x,yelif event == cv.EVENT_MOUSEMOVE:if drawing == True:if mode == True:cv.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)else:cv.circle(img,(x,y),5,(0,0,255),-1)elif event == cv.EVENT_LBUTTONUP:drawing = Falseif mode == True:cv.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)else:cv.circle(img,(x,y),5,(0,0,255),-1)img = np.zeros((512,512,3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image',draw_circle)
while(1):cv.imshow('image',img)k = cv.waitKey(1) & 0xFFif k == ord('m'):mode = not modeelif k == 27:break
cv.destroyAllWindows()
效果图:
二、modify the code to draw an unfilled rectangle.
1.修改方法
第一步
首先将cv.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
和cv.circle(img,(x,y),5,(0,0,255),-1)
中最后一个参数修改,-1
代表填充满,如果最后一个参数修改为正整数例如将最后一个参数修改为5
,则代表的意思是绘制矩形时的线宽度为5
。
第二步
注释掉绑定鼠标移动时绘制矩形的事件。就是注释掉这一部分:
# elif event == cv.EVENT_MOUSEMOVE:# if drawing == True:# if mode == True:# cv.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)# else:# cv.circle(img,(x,y),5,(0,0,255),-1)
修改后的完整代码如下:
import numpy as np
import cv2 as cv
drawing = False # true if mouse is pressed
mode = True # if True, draw rectangle. Press 'm' to toggle to curve
ix,iy = -1,-1
# mouse callback function
def draw_circle(event,x,y,flags,param):global ix,iy,drawing,modeif event == cv.EVENT_LBUTTONDOWN:drawing = Trueix,iy = x,y# elif event == cv.EVENT_MOUSEMOVE:# if drawing == True:# if mode == True:# cv.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)# else:# cv.circle(img,(x,y),5,(0,0,255),-1)elif event == cv.EVENT_LBUTTONUP:drawing = Falseif mode == True:cv.rectangle(img,(ix,iy),(x,y),(0,255,0),5) else:cv.circle(img,(x,y),5,(0,0,255),5)img = np.zeros((512,512,3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image',draw_circle)
while(1):cv.imshow('image',img)k = cv.waitKey(1) & 0xFFif k == ord('m'):mode = not modeelif k == 27:break
cv.destroyAllWindows()
效果图:
这篇关于In our last example, we drew filled rectangle. You modify the code to draw an unfilled rectangle.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!