2013-12-08 3 views
2

Я пытаюсь рисовать прямоугольники поверх фреймов Я записываю с камеры своего ноутбука, используя opencv2 в python.Почему cv2.rectangle возвращает None вместо изображения?

Однако изображение, возвращаемое функцией cv2.rectangle, равно None. Зачем?

import numpy as np 
import cv2 

# details of rectangle to be drawn. 
x, y, h, w = (493, 305, 125, 90) 

cap = cv2.VideoCapture(0) 

while 1: 
    ret, frame = cap.read() 

    if not ret or not frame: 
    # camera didn't give us a frame. 
    continue 

    # attempt to draw a rectangle. 
    img = cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) 

    # This prints out None every time! why? 
    print str(img) 

    if not img: 
    continue 

    # We never get here since img is None. :/ 
    cv2.imshow('img', img) 

Я попытался добавить проверки, как вы видите, если кадр с камеры равен нулю. Я также попытался убедиться, что прямоугольник действительно подходит в кадре.

Я уверен, что моя камера работает, так как я могу успешно imshow рама.

ответ

10

rectangle не возвращает что-нибудь

[править:] в opencv2.4.x но делает вернуть изображение в opencv3.0/Python

также отметить, что очень популярные py_tutrorials являются на 3.0, так что не запутаться;)


import numpy as np 
import cv2 

# details of rectangle to be drawn. 
x, y, h, w = (493, 305, 125, 90) 

cap = cv2.VideoCapture(0) 

while 1: 
    ret, frame = cap.read() 

    if not ret or not frame: 
    # camera didn't give us a frame. 
    continue 

    # draw a rectangle. 
    cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) 

    # show it ;) 
    cv2.imshow('img', frame) 
Смежные вопросы