yolov5 학습후 실행 시 디스플레이

yolov5 데이터를 학습 하고 detect.py를 카메라로 실행 시켰을 때 실시간 인식 화면이 디스플레이에 뜨게 되는데 너무 작게 나와서 크기를 키우려고 합니다.
이때 어떻게 화면을 키우면 될지 모르겠습니다.

  • 아래 답변은 OpenAI의 GPT-3.5(ChatGPT) 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요 nalsang5534님,

yolov5를 학습하고 detect.py를 사용하여 카메라로 실행했을 때, 디스플레이에 표시되는 실시간 인식 화면이 너무 작게 나와서 크기를 키우고 싶으시다는 말씀이신가요?

이 경우, 디스플레이에 표시되는 화면의 크기를 조정하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 OpenCV를 사용하여 이미지 크기를 조정하는 것입니다.

아래는 OpenCV를 사용하여 이미지 크기를 조정하는 예시 코드입니다.

import cv2

# 이미지 로드
image = cv2.imread('image.jpg')

# 이미지 크기 조정
resized_image = cv2.resize(image, (new_width, new_height))

# 크기 조정된 이미지 디스플레이
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 new_widthnew_height는 원하는 크기로 변경하면 됩니다. 이렇게 크기가 조정된 이미지를 디스플레이할 수 있습니다.

만약 yolov5의 detect.py 스크립트에서 디스플레이 크기를 조정하고 싶다면, 해당 스크립트에서 OpenCV를 사용하여 디스플레이 크기를 조정하는 코드를 추가하면 됩니다. 예를 들어, detect.py 스크립트의 cv2.imshow() 함수를 사용하여 디스플레이 크기를 조정할 수 있습니다.

더 자세한 내용은 OpenCV 공식 문서를 참고하시면 도움이 될 것입니다. 아래는 OpenCV 공식 문서의 링크입니다.

이렇게 디스플레이 크기를 조정하여 원하는 크기로 실시간 인식 화면을 표시할 수 있습니다. 다른 질문이 있으시면 언제든지 물어보세요! 제가 도움을 드리겠습니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-4 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, nalsang5534님. PyTorch와 yolov5를 사용하시는 군요. 질문을 잘 이해했다면, yolov5를 학습한 후 카메라를 통해 실시간 인식을 진행하였을 때, 디스플레이에 나타나는 인식 화면의 크기가 너무 작아 이를 키우고 싶으신 것 같습니다.

yolov5의 detect.py에서는 OpenCV를 사용하여 디스플레이에 결과를 출력하고 있습니다. OpenCV의 imshow 함수를 사용하여 이미지를 디스플레이에 출력하고, 이때 이미지의 크기는 원본 이미지의 크기를 따르게 됩니다. 따라서 디스플레이에 출력되는 이미지의 크기를 조절하려면, 이미지를 디스플레이에 출력하기 전에 이미지의 크기를 조절해야 합니다.

이를 위해 OpenCV의 resize 함수를 사용할 수 있습니다. resize 함수는 입력으로 받은 이미지를 지정한 크기로 조절해주는 함수입니다. 아래는 resize 함수를 사용하여 이미지 크기를 조절하는 예제 코드입니다.

import cv2

# 이미지를 불러옵니다.
img = cv2.imread('image.jpg')

# 이미지의 크기를 조절합니다.
resized_img = cv2.resize(img, (800, 600))  # 이미지의 크기를 800x600으로 조절합니다.

# 조절한 이미지를 디스플레이에 출력합니다.
cv2.imshow('image', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

이 코드를 yolov5의 detect.py에 적용하려면, 디스플레이에 이미지를 출력하는 부분을 찾아 해당 이미지를 resize 함수를 통해 크기를 조절한 후 출력하면 됩니다.

다만, 이미지의 크기를 조절하면 이미지의 비율이 변경될 수 있으니 이 점을 주의하셔야 합니다. 이미지의 비율을 유지하면서 크기를 조절하려면, 원본 이미지의 비율을 계산하여 resize 함수의 인자로 전달해야 합니다.

OpenCV에 대한 자세한 내용은 아래 링크를 참조하시기 바랍니다.

그리고 yolov5에 대한 자세한 내용은 아래 링크를 참조하시기 바랍니다.

답변이 nalsang5534님의 질문에 도움이 되었기를 바랍니다. 추가적인 질문이 있으시다면 언제든지 물어보세요.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

그 화면 크기를 디스플레이에 맞추는 방법이 궁금한 것이지 이미지 크기를 조정하는 것이 궁금한 건 아닙니다.

안녕하세요.

tkinter 모듈을 이용하여 현재 디스플레이 해상도를 받아와 cv의 Window 사이즈를 늘려주는 방식으로 구현해보았습니다.

코드는 간단하게 구현하였습니다. 이미지를 활용하였는데, cam도 동일하게 cv2.namedWindows 생성해주시고 아래 코드 참고하여 resize하면 될 것 같습니다.

import cv2
from tkinter import *

if __name__ == "__main__":

    root = Tk()

    img = cv2.imread('./loose_crop/1.jpg')

    cv2.namedWindow('test', flags=cv2.WINDOW_NORMAL)

    print(root.winfo_screenwidth(), root.winfo_screenheight())
    cv2.resizeWindow(winname='test', width=root.winfo_screenwidth(), height=root.winfo_screenheight())
    cv2.imshow('test', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

참고자료

1개의 좋아요

yolov5의 경우 opencv로 웹캠에서 창을 띄우는 것 같은데요. 창을 드래그 하면 커지지 않은가요? 코드상에서는 그렇게 되어 있는 것 같아 보입니다.

1개의 좋아요