2017-05-05 2 views
2

저는 Python3에서 Opencv2를 사용하고 있습니다.
뉴스 비디오를위한 "샷 경계 탐지"프로그램을 작성하고 있습니다.
처음에는 비디오 프레임을 9 개로 분할해야했습니다. 그러나, 나는이 분야에서 새로운 사람이라는 것을 어떻게 할 지 확신하지 못합니다. 자르기와 함께했는데 프레임을 여러 조각으로 나누는 것이 옳지 않은 것처럼 보입니다.
비디오 프레임을 9 분할하는 방법은 무엇입니까?

참고 : "내 제목"으로 검색하면 ROI 응답에 도달 할 수 없습니다. 그러나 이제 이것이 ROI 인 것으로 보입니다.

+0

그래서 당신이 9 카메라를했고 경우 등이다 너와 하나의 프레임에 모든 이미지를 보여줄거야, 맞지? –

+0

내 프레임의 모양이 720x240 인 경우 해당하지 않습니다. 240x80과 같은 프레임 9 개를 나눠야하고 이후에이 9 개의 부분에 대한 지역 히스토그램을 찾습니다. 더 단순하게하기 위해 프레임이 아닌 이미지라고 생각할 수 있습니다. – cybseccrypt

+1

찾고있는 것은 ROI입니다. 당신은 질문에 대한 질문을 참조 할 수 있습니다 [파이썬으로 복사 ROI] (http://stackoverflow.com/questions/25734545/opencv-using-python-copy-roi-to-new-smaller-image) – Croolman

답변

6

ROI를 사용하고 다른 이미지를 배열에 추가해야합니다.

나는 나의 고양이 테스트 : 여기

enter image description here

당신이 코드를 가지고 : (누르면 키 'Q'를 완료)를

import cv2 

cap = cv2.VideoCapture(0) 
n_rows = 3 
n_images_per_row = 3 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 
    height, width, ch = frame.shape 

    roi_height = height/n_rows 
    roi_width = width/n_images_per_row 

    images = [] 

    for x in range(0, n_rows): 
     for y in range(0,n_images_per_row): 
      tmp_image=frame[x*roi_height:(x+1)*roi_height, y*roi_width:(y+1)*roi_width] 
      images.append(tmp_image) 

    # Display the resulting sub-frame 
    for x in range(0, n_rows): 
     for y in range(0, n_images_per_row): 
      cv2.imshow(str(x*n_images_per_row+y+1), images[x*n_images_per_row+y]) 
      cv2.moveWindow(str(x*n_images_per_row+y+1), 100+(y*roi_width), 50+(x*roi_height)) 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 
+0

@cybseccrypt 창을 끌 필요가 없도록 표시 코드가 향상되었습니다. 너에게 잘 작동하는지 알려줘! –