[cv2.imread] 및 [cv2.imdecode] 사용법

경로에 중국어가 포함된 이미지는 cv2.imread로 직접 읽으면 에러가 난다. 둘 사이의 사용법과 차이점을 기록합니다.

목차

 1. 이미지를 읽는 두 가지 방법 비교

 2. 두 가지 이미지 저장 방법 비교

 


 1. 이미지를 읽는 두 가지 방법 비교

  • cv2.imread는 이미지를 정상적으로 읽습니다.
import cv2
path = '/data/北京/beijing.png'
img = cv2.imread(path)

위의 코드를 실행하면 오류가 보고됩니다!

  • cv2.imdecode는 메모리에서 이미지를 읽습니다.
import cv2
path = '/data/北京/beijing.png'
arr = np.fromfile(path, dtype=np.uint8)
img = cv2.imdecode(arr, flags=cv2.IMREAD_COLOR)

위 코드를 실행하면 성공!

그리고 imdecode로 얻은 이미지 밴드의 순서는 BGR이 아닌 RGB로 opencv와 다른 점이다.

기능 설명:

np.decode는   메모리의 버퍼에서 이미지를 읽습니다.

np.fromfile은  텍스트 또는 이진 파일의 데이터를 배열로 구성합니다.


 2. 두 가지 이미지 저장 방법 비교

  • cv2.imwrite는 이미지를 정상적으로 읽습니다.
import cv2
out_path = '/data/北京/beijing.png'
cv2.imwrite(out_path,img)

위의 코드를 실행하면 오류가 보고됩니다!

  • cv2.imdecode는 메모리에서 이미지를 읽습니다.
import cv2
out_path = '/data/北京/beijing.png'
arr = cv2.imencode('png',img)
out[1].tofile(out_path)

위 코드를 실행하면 성공!

 기능 설명:

cv2.encode는  이미지를 메모리 버퍼로 인코딩합니다.

np.tofile은  배열의 데이터를 이진 형식의 파일에 씁니다.

정리하기 쉽지 않습니다. 원 클릭 세 링크에 오신 것을 환영합니다! ! !

추천

출처blog.csdn.net/qq_38308388/article/details/129199454