2016-04-03 71 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