मैं फ्लास्क का उपयोग करके छवि अपलोड करने के लिए एपीआई विकसित कर रहा हूं। अपलोड करने के बाद मैं ओपनसीवी का उपयोग करके छवि को संशोधित करना चाहता हूं, चूंकि ओपनसीवी को numpy सरणी ऑब्जेक्ट की आवश्यकता होती है, मेरे पास फ़ाइल ऑब्जेक्ट है, मैं numpy सरणी में कैसे परिवर्तित करूं? यहाँ मेरा कोड है

@app.route('/upload', methods=['POST'])
def enroll_user():
    file = request.files['fileName']
    # file.save(os.path.join(file.filename))
    return response

संपादित करें: अपडेट किया गया कोड

@app.route('/upload', methods=['POST'])
    def enroll_user():
        file = request.files['fileName']
        response = file.read()
        # file.save(os.path.join(file.filename))
        return response

मैं फ़ाइल को cv2 फ्रेम में कनवर्ट करना चाहता हूं जैसा कि मुझे नीचे दिए गए कोड के साथ मिलता है:

ret, frame = cv2.imread(file)

एक तरीका है डिस्क पर इमेज लिखना और cv2.imread के साथ फिर से पढ़ना लेकिन मैं ऐसा नहीं करना चाहता क्योंकि इसमें समय लगेगा। तो फ़ाइल ऑब्जेक्ट से cv2 फ्रेम में कनवर्ट करने का कोई तरीका है?

धन्यवाद

9
Krunal Sonparate 24 सितंबर 2019, 17:01

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपके पास response नामक अपने चर में JPEG/PNG फ़ाइल की सामग्री प्रभावी रूप से है, तो मुझे लगता है कि आप यह कर सकते हैं:

frame = cv2.imdecode(response)

या, आपको यह करने की आवश्यकता हो सकती है:

frame = cv2.imdecode(np.fromstring(response, np.uint8), cv2.IMREAD_COLOR)

इसे विफल करना, दूसरा तरीका इस प्रकार है:

from io import BytesIO
from scipy import misc

frame = misc.imread(BytesIO(response))
3
Mark Setchell 25 सितंबर 2019, 09:06