Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I read an image from a path with Unicode characters?

Tags:

I have the following code and it fails, because it cannot read the file from disk. The image is always None.

# -*- coding: utf-8 -*- import cv2 import numpy  bgrImage = cv2.imread(u'D:\\ö\\handschuh.jpg') 

Note: my file is already saved as UTF-8 with BOM. I verified with Notepad++.

In Process Monitor, I see that Python is acccessing the file from a wrong path:

Process Monitor

I have read about:

  • Open file with unicode filename, which is about the open() function and not related to OpenCV.
  • How do I read an image file using Python, but that's unrelated to Unicode issues.
like image 476
Thomas Weller Avatar asked Apr 03 '17 13:04

Thomas Weller


1 Answers

It can be done by

  • opening the file using open(), which supports Unicode as in the linked answer,
  • read the contents as a byte array,
  • convert the byte array to a NumPy array,
  • decode the image
# -*- coding: utf-8 -*- import cv2 import numpy  stream = open(u'D:\\ö\\handschuh.jpg', "rb") bytes = bytearray(stream.read()) numpyarray = numpy.asarray(bytes, dtype=numpy.uint8) bgrImage = cv2.imdecode(numpyarray, cv2.IMREAD_UNCHANGED) 
like image 52
Thomas Weller Avatar answered Sep 23 '22 23:09

Thomas Weller