>

cv2에서 비디오를 보여 주려고하는데 비디오가 끝나면 보여주고 이미지를주고 싶습니다. 비디오가 시작되고 새 프레임 위에 있으면 이미지를 표시하기 위해 열리지 만 비디오가 끝나면 비디오와 동일한 프레임에 이미지가 표시됩니다. 어떻게하면 되나요?

import cv2
cap = cv2.VideoCapture('video.mp4')
img = cv2.imread('test.jpg', -1)
if (cap.isOpened() == False):
    print("Error opening video stream or file")
while (cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow('Frame', frame)
        if cv2.waitKey(25) == ord('q'):
            cv2.destroyAllWindows();
            break
    else:
        break
cap.release()
cv2.imshow('image', img)
k = cv2.waitKey(0) & 0xFF
if k == 27:
  cv2.destroyAllWindows()

  • 답변 # 1

    같은 창에 img를 표시하고 같은 이름으로 전달하고 싶습니다 :

    import cv2
    cap = cv2.VideoCapture('video.mp4')
    img = cv2.imread('test.jpg', -1)
    if (cap.isOpened() == False):
        print("Error opening video stream or file")
    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret == True:
            cv2.imshow('Frame', frame)
            # add waitKey for video to display
            cv2.waitKey(1)
            if cv2.waitKey(25) == ord('q'):
                # do not close window, you want to show the frame
                # cv2.destroyAllWindows();
                break
        else:
            break
    cap.release()
    cv2.imshow('Frame', img)   # note the difference
    k = cv2.waitKey(0) & 0xFF
    if k == 27:
      cv2.destroyAllWindows()
    
    

관련 자료

  • 이전 dataframe - R 데이터 프레임에서 그룹의 각 요소에 함수 적용
  • 다음 c# - 메일의 하이퍼 링크 안에 URL을 포함시켜야합니다