【问题标题】:Python & CV2: How do i draw a line on an image with mouse then return line coordinates?Python & CV2:我如何用鼠标在图像上画一条线然后返回线坐标?
【发布时间】:2013-04-24 14:53:18
【问题描述】:

我希望在我正在逐帧浏览的视频上画一条线,以便计算线的角度。我制作了一个非常简单的脚本,它逐步浏览视频并尝试收集数组中每个图像中单击的点,但即使这似乎也不起作用......这是代码:

import cv2, cv

cap = cv2.VideoCapture('video.avi')

box = []
def on_mouse(event, x, y, flags):
    if event == cv.CV_EVENT_LBUTTONDOWN:
        print 'Mouse Position: '+x+', '+y
        box.append(x, y)

#cv2.rectangle(img, pt1, pt2, color)
#cv2.line(img, pt1, pt2, color) 
drawing_box = False

cv.SetMouseCallback('real image', on_mouse, 0)
count = 0
while(1):
    _,img = cap.read()
    img = cv2.blur(img, (3,3))

    cv2.namedWindow('real image')
    cv2.imshow('real image', img)

    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
        break
print box

感谢任何帮助!

非常感谢

约翰

【问题讨论】:

标签: python opencv


【解决方案1】:

这是我找到的解决方法:

def on_mouse(event, x, y, flags, params):
    if event == cv.CV_EVENT_LBUTTONDOWN:
        print 'Start Mouse Position: '+str(x)+', '+str(y)
        sbox = [x, y]
        boxes.append(sbox)
    elif event == cv.CV_EVENT_LBUTTONUP:
        print 'End Mouse Position: '+str(x)+', '+str(y)
        ebox = [x, y]
        boxes.append(ebox)

count = 0
while(1):
    count += 1
    _,img = cap.read()
    img = cv2.blur(img, (3,3))

    cv2.namedWindow('real image')
    cv.SetMouseCallback('real image', on_mouse, 0)
    cv2.imshow('real image', img)

    if count < 50:
        if cv2.waitKey(33) == 27:
            cv2.destroyAllWindows()
            break
    elif count >= 50:
        if cv2.waitKey(0) == 27:
            cv2.destroyAllWindows()
            break
        count = 0

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多