Trouble/OpenCV 7

Opencv cornerSubPix empty array 문제

cv2.error: OpenCV(4.7.0) /io/opencv/modules/imgproc/src/cornersubpix.cpp:58: error: (-215:Assertion failed) count >= 0 in function 'cornerSubPix' 2D feature point 위치를 보정하기 위해서 주로 쓰는 cv2.cornerSubPix() 함수 사용 중 위 오류를 자주 볼 수 있다. 오류명만 보면 입력으로 들어가는 2d point가 empty array라는 뜻으로 보이는데, 그 경우가 아니어도 위 오류가 날 수 있다. # points : np.float64 cv2.cornerSubPix(gray, points, (5, 5), (-1, -1), subpix_criteria) # fail ..

Trouble/OpenCV 2024.02.27

Python OpenCV solvePnP 이유 모를 type error

OpenCV solvePnP 함수는 자세 초기화할 때 자주 쓰는 함수로 매우 익숙하다. 주요 주의사항으로는 입력값 3d point (object point), 2d point (image point), mtx(intrinsic matrix), distortion coefficient 들이 float이나 double 형을 유지해야 한다는 점이다. (float, double 섞여도 되지만 권장하진 않음.) python이라면 np.float32이나 np.float64로 통일해서 사용해야 한다. 그렇지 않으면 다음 에러를 만날 수 있다. cv2.error: OpenCV(4.7.0) /io/opencv/modules/calib3d/src/solvepnp.cpp:838: error: (-215:Assertion f..

Trouble/OpenCV 2024.02.22

C++ OpenCV cvtColor memory leakage 문제

C++로 코드를 구현하던 중 갑자기 다음와 같은 오류가 났다. terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped) 보통 힙 메모리 부족할 때 발생하는 오류인데, 딱히 동적 할당을 무한히 반복하거나 객체 생성을 무한히 하는 것도 아닌데 갑자기 메모리 부족하다고 떴다. 메모리 사용이 폭발적으로 증가하는 병목 지점을 찾아보니 cv::cvtColor() 호출 지점이었다. cv::Mat cvimg = cv::imread(img_path); cv::Mat cvimg_gray; cv::cvtColor(cvimg, cvimg_gray, cv::COLOR_BGR2GRAY); //..

Trouble/OpenCV 2024.02.05

import cv2 시 'numpy._DTypeMeta' object is not subscriptable 오류

pip install opencv-python으로 cv2 설치하는 것은 아주 간단한데, 설치하고 나서 다음 오류가 떴다. Traceback (most recent call last): File "/home/jseob/Desktop/yjs/codes/3DDFA_V2/demo.py", line 7, in import cv2 File "/home/jseob/anaconda3/envs/face/lib/python3.9/site-packages/cv2/__init__.py", line 181, in bootstrap() File "/home/jseob/anaconda3/envs/face/lib/python3.9/site-packages/cv2/__init__.py", line 175, in bootstrap if..

Trouble/OpenCV 2023.09.04

이미지가 일부가 깨져 열리지 않는 문제 : image file is truncated

이미지 파일이 잘 존재하고 뷰어로는 잘 열리는 상황에서도 opencv cv2.imread로 이미지가 읽히지 않는 현상이 있다. 결론부터 말하면 이미지 파일이 손상되어있는 것이 원인인데 뷰어에서는 열리므로 약간 손상되어있는 것이다. 자세히 보면 아래 사진처럼 뷰어에서 일부가 회색으로 보일 것이다. 이미지가 실제로 (128, 128, 128)을 갖는 것이 아니라 pixel에 값이 존재 하지 않는 것이다. 문제 상황 check0 = os.path.exists(img_path) # True check1 = os.path.isfile(img_path) # True cvimg = cv2.imread(img_path) # None pilimg = Image.open(img_path) # image file is tr..

Trouble/OpenCV 2023.08.25

cv2.fisheye 사용 시 error: (-215:Assertion failed) objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3 in function 문제

cv2.error: OpenCV(4.7.0) /io/opencv/modules/calib3d/src/fisheye.cpp:77: error: (-215:Assertion failed) objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3 in function 'projectPoints' cv2.fisheye를 쓸 일이 드물긴 하지만 가끔 어쩌다 쓸 때 위와 같은 오류를 자주 볼 수 있다. 오류명만 봐서는 사용하는 변수 타입이 float64, flaot32 중 하나로 통일이 안되어있단 뜻 같은데 타입을 맞춰도 오류가 해결되지 않기 때문에 조금 귀찮다. 그 경우 대부분 objectPoints 즉, 사용하는 3D point의 shape이 잘못되..

Trouble/OpenCV 2023.06.27

cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/grfmt_exr.cpp:103: error: (-213:The function/feature is not implemented) imgcodecs: OpenEXR codec is disabled.

cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/grfmt_exr.cpp:103: error: (-213:The function/feature is not implemented) imgcodecs: OpenEXR codec is disabled. You can enable it via 'OPENCV_IO_ENABLE_OPENEXR' option. Refer for details and cautions here: https://github.com/opencv/opencv/issues/21326 in function 'initOpenEXR' Opencv로 depth 이미지를 다룰 때 depth 이미지의 확장자가 .exr 파일일 경우, 위와 같은 오류가 ..

Trouble/OpenCV 2023.02.20