In our last example, we drew filled rectangle. You modify the code to draw an unfilled rectangle.

阅读: 评论:0

In our last example, we drew filled rectangle. You modify the code to draw an unfilled rectangle.

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.修改方法
      • 第一步
      • 第二步


前言

题目地址为:.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 == angle(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 == angle(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.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 == angle(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()

效果图:

本文发布于:2024-01-29 09:17:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649103314253.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:rectangle   filled   drew   modify   unfilled
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23