<opencv를 연습하는 중에>
난생 처음으로 파이썬에서
(단 한 번도 써 본 적도 없고, 있는 줄도 몰라서 궁금해 해본 적조차 없었던)
np.ascontiguousarray 함수를 사용해서 오류를 해결하는 경험을 했다.
고백하건대 ChatGPT가 아니었으면 새벽까지 삽질하다 나자빠졌을 것ㅜ
해결돼서 기쁘지만 아직도 얼떨떨하다. opencv는 "연속된 메모리 배열"이란 걸 요구하는구나...
C 근처에만 가면 나는 너무 작아졌다.
귀한 경험 한 셈 치고 넘어갈 게 아니고
이놈의 CS 공포증을 이제부터라도 극복해야겠다.
고마워, 챗지피티!
=========
부연하면,
RGBA 이미지 배열을 RGB로 변환할 때
단순히 슬라이싱으로 img = img[:, :, :3]
으로 A값만 잘라내면 될 줄 알았는데,
opencv로 이미지를 조작할 때 자꾸 알 수 없는 오류가 났다.
다른 RGB이미지들은 동일한 연산이 잘 됐는데.
사이즈도 데이터타입도 완전 동일한 배열 두 개가
왜 이건 되고 저건 오류가 나는지 이유를 찾다가
챗지피티한테 연쇄질문을 던지다 보니
저런 개념을 알려준 것.
챗지피티가 알려준 대로,
if not img.flags['C_CONTIGUOUS']:
img = np.ascontiguousarray(img)
라는 라인을 추가했더니 언제 그랬냐는 듯 말끔히 해결되었다.
'기타 > 파이썬 관련' 카테고리의 다른 글
[세상 쉬운 파이썬중급] nonlocal? closure? yield? generator? (0) | 2024.03.13 |
---|---|
jupyter notebook을 pdf로 저장할 때 오류가 난다면? (0) | 2024.01.31 |
[YOLOv8] 모델의 추론이미지가 자꾸 이상한 폴더에 저장될 때 (0) | 2024.01.31 |
댓글