전공 과목 이수2👨‍💻/디지털영상처리

이미지 위에 마우스로 사각형 그리기

천숭이 2021. 9. 28. 18:54

https://velog.io/@codren/%EC%B9%B4%EB%A9%94%EB%9D%BC%EC%99%80-%EB%8F%99%EC%98%81%EC%83%81-%EC%B2%98%EB%A6%AC -> 참고

 

비디오 파일 읽어온다
capture = cv2.VideoCapture(FullName)

영상의 total frame
capture.get(CAP_PROP_FRAME_COUNT)

현재 프레임 번호
capture.get(CAP_PROP_POS_FRAMES)

속성변경 함수
capture.set(속성상수, 지정하고싶은 속성값) -> retval 성공 유무

 


ROI

*중요* OpenCV에서는 ROI를 mouse drag 동작으로 화면상에 쉽게 선택할 수 있는 selectROI() 함수를 제공한다. 
retval = cv.selectROI( windowName, img[, showCrosshair[, fromCenter]] )
retval = cv.selectROI( img[, showCrosshair[, fromCenter]] )

 

 

r = cv.selectROI(img)     # 기본적으로 십자선이 있음 
a = cv.selectROI(msg_str, img, showCrosshair=False)     # False함으로써 십자선 지우기

첫번째줄 r
두번째줄 a


setMouseCallback(창이름, 콜백함수) 창이름으로 불리는 영상 윈도에서 마우스 동작을 하면 콜백함수가 자동 호출된다.
전달되는 중요 파라미터
** event: 마우스 버튼 동작, 왼쪽/오른쪽, 눌렀는가/놓았는가. 이동중인가?
EVENT_LBUTTONDOWN/EVENT_LBUTTONUP, EVENT_MOUSEMOVE
x, y: 마우스의 좌표
콜백 함수에서는 event를 보고 어떤 동작인가 판단하고,
마우스의 위치를 읽어들인 후 event에 맞는 동작을 할 수 있도록 변수를 바꾸어준다.

 

cv2.rectangle(image_to_show, (s_x, s_y), (x, y), (0, 255, 0), 1)

이미지, 시작좌표, 종료좌표, 색, 선두께, 선종류, 

 

사각형 그리기 알고리즘 :

마우스왼버튼 클릭(좌표기록) -> 사각형 그리기(왼버튼 떼기전에 사각형은 0개임) -> 왼버튼 떼기(사각형 그리기


CV_08_1 영상크기 조절, 이어붙이기

 

dst = cv2.resize(src, dstSize, fx, fy, interpolation)

입력 이미지(src), 절대 크기(dstSize), 상대 크기(fx, fy), 보간법(interpolation)으로 출력 이미지(dst)을 생성합니다.

※ 보간법이란, 이미지 변경될때 변경된 픽셀의 자리를 추정값으로 채워주는 과정

 

 

 

 

참조 : https://076923.github.io/posts/Python-opencv-8/