簡體   English   中英

無法從opencv中的URL打開圖像

[英]Can't open an image from URL in opencv

我正在開發一個程序,該程序讀取 csv 文件以獲取顏色名稱,將 RGB 值與來自 URL 的圖像的 RGB 值進行比較。 我認為程序沒有從 URL 獲取圖像,因為我嘗試使用 imshow() 檢查圖像是否傳遞到程序中。 (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

這是代碼:

import numpy as np #needed to work with matrix of an image
import pandas as pd #needed to work with color.csv
import cv2 #needed to work with image
import matplotlib.pyplot as pl #needed to work with plotting
import urllib.request#needed to work with image url

#step 1. Read csv file with name, RGB and HEX values.
#step 2. Set color detection function. Get value of pixels in a NumPy array
#step 3. Compare RGB value of a pixel with dataframe.
#step 4. Save the name and RBG value inside a file. 

#image from url
def url_to_image(url): #doesn't get file, need to work upon this 
    resp = urllib.request.urlopen(url)
    image = np.asarray(bytearray(resp.read()), dtype='uint8')
    image = cv2.imdecode(image,cv2.IMREAD_COLOR)
    return image

#dataframe with 864 colors 
index = ['color', 'color_name', 'hex','R','G','B'] 
csv = pd.read_csv('colors.csv', names = index, header = None)



def getColor(R,G,B): 
    minimum = 10000
    for i in range(len(csv)):
        distance = abs(R-int(csv.loc[i, 'R'])) + abs(G-int(csv.loc[i, 'G'])) + abs(B-int(csv.loc[i,'B']))
        if(distance<=minimum):
            minimum = distance
            color_name = csv.loc[i, 'color_name']
        return color_name

img = url_to_image("https://upload.wikimedia.org/wikipedia/commons/2/24/Solid_purple.svg")
cv2.imshow("image", img)
cv2.waitKey(0)














它不起作用,因為您正在嘗試使用 svg 圖像(基於矢量)在矩陣中打開,如 JPEG 或 PNG 圖像(基於光柵)。 它不適用於這些。

嘗試像這樣加載不同的圖像

https://miro.medium.com/max/800/1*bNfxs62uJzISTfuPlOzOWQ.png 編輯錯誤鏈接

https://htmlcolorcodes.com/assets/images/colors/purple-color-solid-background-1920x1080.png

這會起作用,因為這是一個 png

據我所知,Opencv 對基於 SVG 的圖像沒有很好的支持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM