翻转图像后OpenCV putText不起作用

我想从相机中抓取图像并将它们向左/向右翻转,以便视图表现得像一面镜子。但是,我也喜欢在视图中添加一些文本,但事实证明,使用 翻转图像后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()

带翻转的结果帧:

http://img4.mukewang.com/619cce8f0001333006430562.jpg

没有翻转的结果帧: 

http://img.mukewang.com/619ccea700012b8306370556.jpg


弑天下
浏览 463回答 1
1回答

慕妹3242003

我怀疑这是由于cv2.putText不兼容np.array是的返回值np.fliplr(frame)。我建议你frame = cv2.flip(frame, 1)改用。import numpy as npimport cv2import platformif __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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python