2016-04-03 69 views
3

要在我需要绘制在python-OpenCV的如何使用OpenCV的

+0

你想要什么类型的随机形状的画? – ZdaR

+0

**任何形状的矩形,圆形或任何不规则的形状** – Neenu

回答

6

您问过如何使用计算机的鼠标在图片上绘制任意发送者的随机形状。这是一个简单的解决方案:

首先,您需要设计一种方法,使您可以绘制。所以让我们从OpenCV: Mouse as a Paint-Brush中激发我们自己的灵感,其中一种方法用于使用鼠标绘制常见的常规形状,例如圆形或矩形。在你的情况下,你将需要随机绘图,就像你可以用你的手一样。

因此,使用这种方法,你可以用鼠标画点,并使用cv2.line()方法来执行它们之间的interpolation

cv2.line(im,(current_former_x,current_former_y),(former_x,former_y),(0,0,255),5) 

哪里im是你读的形象,而你必须记住鼠标的前坐标所有在位时间:

current_former_x = former_x 
current_former_y = former_y 

全部OpenCV的程序:

这里代码。不要犹豫,评论任何你想不明白:

''' 
Created on Apr 3, 2016 

@author: Bill BEGUERADJ 
''' 
import cv2 
import numpy as np 

drawing=False # true if mouse is pressed 
mode=True # if True, draw rectangle. Press 'm' to toggle to curve 

# mouse callback function 
def begueradj_draw(event,former_x,former_y,flags,param): 
    global current_former_x,current_former_y,drawing, mode 

    if event==cv2.EVENT_LBUTTONDOWN: 
     drawing=True 
     current_former_x,current_former_y=former_x,former_y 

    elif event==cv2.EVENT_MOUSEMOVE: 
     if drawing==True: 
      if mode==True: 
       cv2.line(im,(current_former_x,current_former_y),(former_x,former_y),(0,0,255),5) 
       current_former_x = former_x 
       current_former_y = former_y 
       #print former_x,former_y 
    elif event==cv2.EVENT_LBUTTONUP: 
     drawing=False 
     if mode==True: 
      cv2.line(im,(current_former_x,current_former_y),(former_x,former_y),(0,0,255),5) 
      current_former_x = former_x 
      current_former_y = former_y 
    return former_x,former_y  



im = cv2.imread("darwin.jpg") 
cv2.namedWindow("Bill BEGUERADJ OpenCV") 
cv2.setMouseCallback('Bill BEGUERADJ OpenCV',begueradj_draw) 
while(1): 
    cv2.imshow('Bill BEGUERADJ OpenCV',im) 
    k=cv2.waitKey(1)&0xFF 
    if k==27: 
     break 
cv2.destroyAllWindows() 

演示:

enter image description here

+0

**返回former_x,former_y ----我不明白这个语句的使用** – Neenu

+0

它们是前一个鼠标的坐标您将鼠标移动到图像的以下位置。看看这个方法的定义:我们返回'former_x'和'former_y',因为只要你绘制它们就会被重复使用。尝试运行该程序 –

+0

我运行pgm。非常感谢你的帮助 – Neenu