翻转图像后,OpenCV putText不起作用

时间:2019-03-01 22:00:16

标签: python numpy opencv

我想从相机抓取图像并将其左右翻转,以使视图的表现像镜子一样。但是,我也想在视图中添加一些文本,但是事实证明,使用np.fliplr(frame)翻转图像后,cv.putText不再起作用。

这是我使用python 3.5.2的最小示例:

import numpy as np
import cv2
import platform

if __name__ == "__main__":
    print("python version:", platform.python_version())
    cap = cv2.VideoCapture(0)
    while(True):
        # Capture frame-by-frame
        ret, frame = cap.read()

        cv2.putText(frame,'Hello World : Before flip',(100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255),2,cv2.LINE_AA)
        frame = np.fliplr(frame)
        cv2.putText(frame,'Hello World : After flip',(100, 200), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255),2,cv2.LINE_AA)

        # Process the keys
        key = cv2.waitKey(1) & 0xFF
        if key == ord('q'):
            print("quit")
            break
        # show the images
        cv2.imshow('frame',frame)

    cap.release()
    cv2.destroyAllWindows()

带有翻转的结果帧: enter image description here

没有翻转的结果帧: enter image description here

1 个答案:

答案 0 :(得分:2)

我怀疑是由于cv2.putTextnp.array的返回值np.fliplr(frame)不兼容所致。我建议您改用frame = cv2.flip(frame, 1)

import numpy as np
import cv2
import platform

if __name__ == "__main__":
    print("python version:", platform.python_version())
    cap = cv2.VideoCapture(0)
    while(True):
        # Capture frame-by-frame
        ret, frame = cap.read()

        cv2.putText(frame,'Hello World : Before flip',(100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255),2,cv2.LINE_AA)
        frame = cv2.flip(frame, 1)
        cv2.putText(frame,'Hello World : After flip',(100, 200), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255),2,cv2.LINE_AA)

        # Process the keys
        key = cv2.waitKey(1) & 0xFF
        if key == ord('q'):
            print("quit")
            break
        # show the images
        cv2.imshow('frame',frame)

    cap.release()
    cv2.destroyAllWindows()