Ali Ismael نشر 19 أكتوبر 2021 أرسل تقرير نشر 19 أكتوبر 2021 أريد كود يمكنني من قراءة الصورة من سلاسل byte string من قاعدة البيانات أو ملف؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 19 أكتوبر 2021 أرسل تقرير نشر 19 أكتوبر 2021 يمكنك استخدام الكود التالي للقيام بعملية تحويل سلاسل byte string إلى صورة، ياستخدام التابع cv2.imdecode و التابع fromstring، كما يلي: from cv2 import cv import numpy as np import cv2 # من ملف أو قاعدة بيانات string تحميل الصورة ك my_f = open('foo.jpg') im_string = my_f.read() # هي السلسلة النصية التي تحوي البيانات im_string الآن أصبحت # إغلاق الملف my_f.close() # 1-D array الآن سيتم إنشاء مصفوفة # im_string المصفوفة سيتم تشكيلها من البيانات التي تم تحميلها من السلسلة arr = np.fromstring(im_string, np.uint8) # image format الآن نستخدم التابع التالي لفك تشفير الصورة وجعلها بتنسيق صورة # cv2.IMREAD_COLOR img_np = cv2.imdecode(arr, cv2.CV_LOAD_IMAGE_COLOR) # 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]) # ولاختبار الأنواع print type(im_string) # <type 'str'> print type(arr) # <type 'numpy.ndarray'> print type(img_ipl) # <type 'cv2.cv.iplimage'> 1 اقتباس
1 Ahmed Sharshar نشر 20 أكتوبر 2021 أرسل تقرير نشر 20 أكتوبر 2021 هناك فكرة أخرى سهلة لتنفيذ هذا الأمر. ببساطة نستطيع كتابة كود بحيث يقوم بقراءة الصورة byte by byte أي byte واحدة كل مرة،ثم يقوم بتخزينهم بجوار بعضهم باستخدام buffer وحين ينتهي من قراءة الملف كاملا يقوم بعرض ما قام بتخزينه أي الصورة كاملة. الكود التالي يوضح هذا: import base64 import json import cv2 import numpy as np #قراءة الملف response = json.loads(open('./0.json', 'r').read()) string = response['img'] #تحويل ال bytes jpg_original = base64.b64decode(string) # استدعاء البايت من الbuffer jpg_as_np = np.frombuffer(jpg_original, dtype=np.uint8) #تحويل الصورة الي شكل مرئي img = cv2.imdecode(jpg_as_np, flags=1) cv2.imwrite('./0.jpg', img) اقتباس
السؤال
Ali Ismael
أريد كود يمكنني من قراءة الصورة من سلاسل byte string من قاعدة البيانات أو ملف؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.