OpenCV putText не работает после переворачивания изображения - PullRequest
0 голосов
/ 02 марта 2019

Я бы хотел получить изображения с камеры и перевернуть их влево / вправо, чтобы представление работало как зеркало.Тем не менее, мне также нравится добавлять текст в представление, но оказывается, что после переворачивания изображения с помощью 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 голосов
/ 02 марта 2019

Я подозреваю, что это из-за cv2.putText несовместимо с np.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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...