I'm trying to load image from string like as PHP function imagecreatefromstring
How can I do that?
I have MySQL blob field image. I'm using MySQLdb and don't want create temporary file for working with images in PyOpenCV.
NOTE: need cv (not cv2) wrapper function
This is what I normally use to convert images stored in database to OpenCV images in Python.
import numpy as np import cv2 from cv2 import cv # Load image as string from file/database fd = open('foo.jpg') img_str = fd.read() fd.close() # CV2 nparr = np.fromstring(img_str, np.uint8) img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR) # cv2.IMREAD_COLOR in OpenCV 3.1 # CV img_ipl = cv.CreateImageHeader((img_np.shape[1], img_np.shape[0]), cv.IPL_DEPTH_8U, 3) cv.SetData(img_ipl, img_np.tostring(), img_np.dtype.itemsize * 3 * img_np.shape[1]) # check types print type(img_str) print type(img_np) print type(img_ipl)
I have added the conversion from numpy.ndarray
to cv2.cv.iplimage
, so the script above will print:
<type 'str'> <type 'numpy.ndarray'> <type 'cv2.cv.iplimage'>
EDIT: As of latest numpy 1.18.5 +
, the np.fromstring
raise a warning, hence np.frombuffer
shall be used in that place.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With