I can read a jpg image from disk via PIL, Python OpenCV, etc. into a numpy array via some built-in functions such as (in the case of OpenCV)
But how do I decode a jpg in binary format directly from memory?
Use case: I want to put a jpg image into a database in binary format and then read it from the db into memory and decode it to a numpy array.
Is this possible?
Assuming that you are storing the image data in your db as a
string, you first need to construct a
numpy array from that string that can later be converted to an image using
cv2.imdecode. For example:
img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
for Python3 use this way:
from scipy import misc import io f = open('file.png', 'rb') fs = f.read() likefile = io.BytesIO(fs) face1 = misc.imread(likefile)
Fetching Images from Url to Jpg
import requests from io import BytesIO response = requests.get("https://optse.ztat.net/teaser/ES/CW15_ES_bermuda_men.jpg") my_img_In_byts = BytesIO(response.content).read() path="C:/Users/XX/Desktop/TryingPython/downloadedPic.jpg" my_fprinter = open(path, mode='wb') print( my_fprinter .write(my_img_In_byts)) my_fprinter.close() print("Done")