Knowhow 85

Opencv large FoV image undistortion

카메라 intrinsic calibration을 마치면 보통 K matrix와 distortion coefficient를 얻는다. K matrix의 경우, fx, fy, cx, cy로 구성된 3x3 matrix일 것이고, distortion coefficient는 일반적인 화각의 카메라라면 5개, 그 외 다른 광각이라면 최대 14개까지 나올 것이다. 그리고 이 값을 사용해서 다음과 같은 함수를 통해 이미지의 왜곡을 펼치고 왜곡이 보정된 이미지 및 포인트를 사용하게 된다. image_ud = cv2.undistort(image, K, dist) point_ud = cv2.undistortPoints(img_pt, K, dist, P=K) 하지만 광각 이미지의 경우, 위 함수를 통해 얻은 undistorte..

Knowhow/Vision 2022.06.16

Opencv multi webcam 사용 시 인식 확인

opencv에서 라이브 웹캠을 2개 이상 사용하고자 할 때, 보통 아래와 같이 접근한다. import cv2 cam0 = cv2.VideoCapture(0) cam1 = cv2.VideoCapture(1) ... camN = cv2.VideoCapture(N) #N is a camera index 이 때, 분명 카메라 N대는 제대로 연결되어 있는데 다음과 같은 오류가 나면서 인식이 안되는 상황이 있을 수 있다. [ WARN:0@0.132] global /io/opencv/modules/videoio/src/cap_v4l.cpp (889) open VIDEOIO(V4L2:/dev/video1): can't open camera by index 이 문제의 원인은 코드에 사용한 camera index와 실제 ..

Knowhow/Vision 2022.06.13

Opencv webcam resolution control

opencv로 웹캠의 해상도를 변경하고 싶을 때, 보통 아래와 같은 코드로 변경한다. import cv2 cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) 그런데 위 코드가 동작하지 않을 때가 있는데 그 이유는, 1. 카메라가 지원하지 않는 해상도일 경우, 2. 카메라가 지원하는 해상도이지만, pixel format이 안 맞을 경우 1. 카메라가 지원하지 않는 해상도일 경우는 당연히 안된다. 2. 카메라가 지원하는 해상도이지만 그래도 안되는 경우는 pixel format이 YUYV인지, MJPG인지 확인할 필요가 있다. uvcdynctrl -f Linux일 경우, ..

Knowhow/Vision 2022.06.13

HTML tips

Tips 1. 폴더명 및 파일명은 소문자로 구성되어야 함. 2. 형태로 이루어진 태그 내에 content를 닮는 형식을 반복하며 코딩. 유효한 tag가 아닐 경우, 무시되고 content는 그냥 text로 출력됨 (html에서는 에러가 없음. 그저 text로 출력되고 의도한 형태로 content가 보이지 않을 뿐) 3. 모든 html 문서는 로 시작해야 함. 크롬의 경우, 알아서 해주기도 하지만 원칙 상. lang은 검색 엔진을 돕기 위해 일반적으로 설정함. 4. 검색할 때 mdn 이라는 키워드를 끝에 붙여서 검색하면 mozila developer network ,firefow 만드는 회사가 만든게 뜸. 안붙이면 w3 schools가 뜨는데 별로임. 5. 여는 tag, 닫는 tag를 동시에 수정하고자 할..

Knowhow/Web 2022.06.12

Opencv 광각 (Large FoV) 카메라 intrinsic calibration

Opencv 를 이용해서 카메라를 intrinsic calibration하고자 할 때, 보통은 아주 쉽게 다음의 함수를 이용해서 할 수 있다. import cv2 mtx = None dist = None rvecs = None tvecs = None obj_points = TARGET_3DPOINT img_points = TARGET_2DPOINT RMSE, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(obj_points, img_points, (img_w, img_h), mtx, dist, rvecs, tvecs) 하지만 광각 카메라로 취득한 이미지를 대상으로 intrinsic calibration을 시도할 때, 위 함수를 그대로 사용할 경우, reprojectio..

Knowhow/Vision 2021.11.22