2013-07-31 8 views
14

मैं PyOpenCV के साथ काम कर रहा हूं। एक अस्थायी फ़ाइल और imwrite के बिना MySQL डीबी को लिखने के लिए cv2 छवि (numpy) को बाइनरी स्ट्रिंग में कैसे परिवर्तित करें?पायथन ओपनसीवी छवि बाइट स्ट्रिंग में कनवर्ट करें?

मैं इसे लेकिन कुछ भी नहीं मिला गूगल हूँ ...

मैं imencode कोशिश कर रहा हूँ, लेकिन ऐसा नहीं काम करता है

capture = cv2.VideoCapture(url.path) 
capture.set(cv2.cv.CV_CAP_PROP_POS_MSEC, float(url.query)) 
self.wfile.write(cv2.imencode('png', capture.read())) 

त्रुटि है:

File "server.py", line 16, in do_GET 
    self.wfile.write(cv2.imencode('png', capture.read())) 
    TypeError: img is not a numerical tuple 

सहायता किसी!

उत्तर

3

capture.read() एक tuple, (err, img) देता है।

कोशिश यह विभाजित:

_,img = capture.read() 
self.wfile.write(cv2.imencode('png', img)) 
+0

यह लौटाता है (सही, सरणी ([[137], [80], [78], ..., [66], [9 6], [130]], dtype = uint8)), लेकिन बाइट नहीं स्ट्रिंग – xercool

+0

इसे बाइट स्ट्रिंग में कैसे परिवर्तित करें? – xercool

+1

मेरा समाधान 'self.wfile.write है (numpy.array (cv2.imencode ('। Png ', img) [1])। Tostring()) ' – xercool

1

मेरे कोड अजगर cgi के साथ opencv उपयोग करने के लिए:

im_data = form['image'].file.read() 
    im = cv2.imdecode(np.asarray(bytearray(im_data), dtype=np.uint8), 1) 
    ret, im_thresh = cv2.threshold(im, 128, 255, cv2.THRESH_BINARY) 
    self.send_response(200) 
    self.send_header("Content-type", "image/jpg") 
    self.end_headers()  
    ret, buf = cv2.imencode('.jpg', im_thresh) 
    self.wfile.write(np.array(buf).tostring()) 
25

आप एक छवि img (जो एक numpy सरणी है) आप इसे में तब्दील कर सकते हैं स्ट्रिंग का उपयोग कर:

>>> img_str = cv2.imencode('.jpg', img)[1].tostring() 
>>> type(img_str) 
'str' 

अब आप आसानी से छवि को अपने डेटाबेस के अंदर स्टोर कर सकते हैं, और वें एन का उपयोग करके इसे ठीक हो:

>>> nparr = np.fromstring(STRING_FROM_DATABASE, np.uint8) 
>>> img = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR) 

जहां चर कि छवि युक्त डेटाबेस के लिए आपकी क्वेरी के परिणाम शामिल हैं के साथ STRING_FROM_DATABASE को बदलने के लिए की जरूरत है।

संबंधित मुद्दे