본문 바로가기
기타/파이썬 관련

opencv와 np.ascontiguousarray

by 일코 2024. 2. 1.

<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)

라는 라인을 추가했더니 언제 그랬냐는 듯 말끔히 해결되었다.

 

따봉 밖에 줄 것이 없어 미안해. 고마워 CtatGPT!
포스팅과 전혀 관계없지만...

 

댓글