使用Python 2.7中的OpenCV 2.4.7.0将图像叠加在网络摄像头上

时间:2013-12-19 23:51:35

标签: python opencv python-2.7

我正在尝试在python中将相机图像叠加到相机上。我可以将图像叠加到另一个图像上,但是当我将相同的东西应用到我的相机上时它不起作用。到目前为止,这是我的代码:

#!/usr/bin/python

import cv2
import time

cv2.cv.NamedWindow("Hawk Eye", 1)

capture = cv2.cv.CaptureFromCAM(0)
cv2.cv.SetCaptureProperty(capture, cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 800)
cv2.cv.SetCaptureProperty(capture, cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 600)

x_offset=y_offset=50
arrows = cv2.imread("arrows.png")

while True:
    webcam=cv2.cv.QueryFrame(capture)
    #webcam[y_offset:y_offset+arrows.shape[0], x_offset:x_offset+arrows.shape[1]]=arrows
    cv2.cv.ShowImage("Hawk Eye", webcam)
    if cv2.cv.WaitKey(10) == 27:
        break
cv2.cv.DestroyAllWindows()

如果我取消注释:

img[y_offset:y_offset+arrows.shape[0], x_offset:x_offset+arrows.shape[1]]=arrows

施加图像的线条,它只显示相机输入,但是当我在循环中添加它时,它会停止工作。谢谢!

1 个答案:

答案 0 :(得分:0)

使用cv2 API可以正常工作:

import cv2
import time

cv2.namedWindow("Hawk Eye", 1)

capture = cv2.VideoCapture(0)
capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 800)
capture.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 600)

x_offset=y_offset=50
arrows = cv2.imread("hawk.png")

while True:
    ret, webcam = capture.read()
    if ret:
        webcam[y_offset:y_offset+arrows.shape[0], x_offset:x_offset+arrows.shape[1]]=arrows
        cv2.imshow("Hawk Eye", webcam)
        if cv2.waitKey(10) == 27:
            break
cv2.destroyAllWindows()