2015-01-29 3 views
2

Я пытаюсь использовать кластер kmeans, чтобы получить наиболее распространенные цвета из изображения. Он отлично работает с локальными изображениями, но возвращает эту ошибку с новой функциональностью вытягивания изображения из URL-адреса. Вот код до строки, которая бросает ошибку:cv2.cvtColor error: (-215) scn == 3 || scn == 4 в функции cv :: cvtColor

# import the necessary packages 
from sklearn.cluster import KMeans 
import numpy as np 
import urllib 
import argparse 
import utils 
import cv2 

def getCommonColors(url): 

    req = urllib.urlopen(url) 
    arr = np.asarray(bytearray(req.read()), dtype=np.uint8) 
    img = cv2.imdecode(arr,-1) 


    image = cv2.imread(np.array_str(img)) 
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 

Любая помощь будет принята с благодарностью!

+3

imread хочет * имя файла *. то, что вы получили от imdecode *, - это уже настоящая вещь. – berak

+0

Стреляй, спасибо! Ценить это. – NoTrueScotsman

ответ

2

может быть, вы могли бы попробовать это, только некоторые изменения из вашего кода ..

import numpy as np 
import urllib2  #maybe requests is another good choice 
import cv2 

def getCommonColors(url): 

    req = urllib2.urlopen(url) 
    arr = np.asarray(bytearray(req.read()), dtype=np.uint8) 
    img = cv2.imdecode(arr,-1) 

    # image = cv2.imread(np.array_str(img)) <-- I think you shoudn't use this method, it will return NoneType in python 
    image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
Смежные вопросы