python 전용으로 binary file로 다뤄주는 모듈 pickle을 공부하다가 아주 간단한 에러를 직면했다.
file 이름을 pickle.py 로 하면 안된다는 것이다.
참고한 블로그의 내용이다!
Q) pickle 사용 시 아래와 같이 에러가 나는데 어떻게 해야 하나요? AttributeError: partially initialized module 'pickle' has no attribute 'dump or load' (most likely due to a circular import)
A)소스코드 작성중인 파일명을 pickle.py 로 하셨을텐데 my_pickle.py 등과 같이 변경해주셔야 합니다. 사용하시려는 모듈과 동일한 이름으로 파일을 생성하면import 시에 동일한 경로에 있는 이 파일을 먼저 인식하게 되기 때문에그렇습니다.
이를 응용했을 때, 다른 것에도 똑같이 파이썬 기본 내장 모듈을 사용한 파일명은 사용하지 않아야 할 것이다!
OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-_xlv4eex\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
opencv에서 이미지를 입력하는 방법은 세 가지가 있다.
1. 이미지 사진 2. 동영상 3. 카메라로 촬영
나는 그 중에 3번, 카메라로 이미지를 입력하는 방법을 사용했는데,
원인을 분석해보니, cv::cvtColor 함수에서 이미지를 로드하지 못하고 있다.
이미지가 정상적으로 로드되지 않으면 해당 에러가 발생한다고 한다.
cap = cv2.VideoCapture(1)
이 부분에서 이미지 로드가 안 되었던 것인데,
전에 USB웹캠을 연결해서 사용하다가 카메라 우선순위를 1번으로 세팅했었던 것을 그대로 유지한 것이 원인이 되었다.
노트북에 내장되어 있는 웹캠의 우선순위는 0번 이므로,
# cap = cv2.VideoCapture(1)
cap = cv2.VideoCapture(0)