Opencv 소개②

Opencv3 시스템에 대한 메모

기본적으로 공식 문서를 확인하면서 물건.

마지막 메모 Opencv에 대해 ①

환경・사용 화상은 전회와 동일.

①동영상 촬영



1)cv2.VIdeoCapture(제1 인수)

opencv.ipynb
cap = cv2.VideoCapture(0)

첫 번째 인수는 0 또는 1를 설정합니다.
USB 카메라를 사용하는 경우 숫자 입력으로 사용할 수 있습니다.

주의로서는 USB 카메라는 전원을 켰을 때에 번호가 흔들리는 순서가 바뀐다.

노트북 PC에서 카메라가 장착된 물체는 대부분 가장 먼저 인식되므로 0에서 인식할 수 있습니다.

뒷받침 USB 카메라는 1로 설정하면 인식할 수 있습니다.

다만, 과거에 있던 현상으로서 해외제의 USB3. 0 접속의 카메라를 opencv로 표시 사용하면 NG
메이커 전용의 소프트를 개입시켜 제어하고 있는 카메라였기 때문에 사용할 수 없었을 가능성 유.

시판의 물건은 대부분 갈 수 있으므로 괜찮다고 생각합니다.

공식 표기를 참고로

opencv.ipynb
device_id = 0
cap = cv2.VideoCapture(device_id)

cap.set(3,640)
cap.set(4,480)
cap.set(5,50)

while(True):
    ret,frame = cap.read()
  gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
  cv2.imshow("frame",gray)

cap.release()
cv2.destroyAllWindows()
cap.set()의 경우
공식 문서 참조.

정확하게는 cap.set (제 1 인수, 제 2 인수)이 되고 있어
첫 번째 인수:propId
두 번째 인수 : 값 등



리스트 위에서 0, 1, 2…가 되어 있습니다.
자주 사용하는 물건으로는
3:CV_CAP_PROP_FRAME_WIDTH 표시 화상의 가로폭 지정
4:CV_CAP_PROP_FRAME_HEIGHT 표시 화상의 세로폭 지정
5 : CV_CAP_PROP_FPS 표시 화상의 FPS 값 지정
cap.set(3,640)는 가로 폭을 640으로 설정합니다.

단지 사용하지 않아도 카메라 기본 설정으로 표시되므로 문제 없다고 생각합니다.
cap.read()는 True/False의 두 값을 반환합니다. 이게 뭐야?

opencv.ipynb
#画像データ有の時
print(ret)
>>>True

#画像データ無の時
print(ret)
>>>False

이미지 데이터는 프레임에 저장된 감각입니다.

cv2.cvtColor(src, code[, dst[, dstCn]])※공식 표기
보기 님 거절 같은 표기라고 ...

미세한 사용법은 아직 잡히지 않았지만
cv2.cvtColor(이미지, 처리 방법)로 좋을까 생각하고 있습니다.

이번에 가면 cv2.cvtColor (frame, cv2.COLOR_BGR2GRAY)
프레임 내의 이미지 데이터를 그레이 스케일링하는 인식
cv2.COLOR_BGR2BGRA BGR 배열 (컬러)cv2.COLOR_RGB2RGBA RGB 배열 (컬러)cv2.COLOR_BGRA2BGR BGR 배열 (컬러)cv2.COLOR_RGBA2RGB RGB 배열 (컬러)
cv2.COLOR_BGR2GRAY BGR 서열 (회색 변환)cv2.COLOR_RGB2GRAY RGB 배열 (회색 변환)

가장 왼쪽은 원본 이미지 (동영상이 아닌 이미지 데이터를 변환하고 있습니다.)

가장 왼쪽은 원본 이미지 ((동영상이 아닌 이미지 데이터를 변환하고 있습니다.)


이미지 데이터에서 수행하면 어떠한 변화도 보이지 않지만
VideoCapture에서 얻은 데이터를 사용하면 상당한 변화가 나타났습니다.
시도해 보면 재미 있다고 생각합니다.

그 밖에도 여러가지 있습니다만 자세한 내용은 여기를 참조하십시오.

② 동영상 데이터를 저장한다.



opencv.ipynb
device_id = 0
cap = cv2.VideoCapture(device_id)

# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        frame = cv2.flip(frame,0)

        # write the flipped frame
        out.write(frame)

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

# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()


공식적으로는 이러한 설명이 되고 있지만 거기까지 복잡하게 할 필요는 없을까
사실이라면 이것이 가장 좋다고 생각합니다.
공식보다 먼저 심플한 방법을 시도하고 있었으므로 솔직히 사용한 적이 없습니다.


opencv.ipynb
device_id = 0
cap = cv2.VideoCapture(device_id)

while True:
    ret,frame = cap.read()
    cv2.imshow(basename,frame)
    key = cv2.waitKey(1) & 0xFF    
    if key == ord('o'):
        cv2.imwrite("ファイル名",frame)

    elif key == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

cv2.imwrite(제1 인수, 제2 인수)
이것을 사용하여 저장할 수 있습니다.
첫 번째 인수는 파일 이름
두 번째 인수는 frame

이제 문제없이 저장할 수 있습니다.

첫 번째 인수를 저장 대상으로 지정할 수 있습니다.

opencv.ipynb
base_path = "保存先"
base_name = "ファイル名"

cv2.imwrite((base_path + datename + ".png"),frame)

상기의 방법으로 곤란한 일은 지금까지 없음.

③정리



이미지를 찍는 것만이라면 이것을 조합해 갈 수 있습니다.

다만, 화상 처리와의 편성이므로 다방면에 넘어간다고 생각합니다.

처리에 관해서는 별도 기재하겠습니다.

또, 잘못된 부분은 매번 수정해 갑니다.

좋은 웹페이지 즐겨찾기