图片如下所示:
我使用这段代码:import matplotlib.pyplot as plt
import numpy as np
import urllib
import cv2
url = 'http://skyservice.pha.jhu.edu/DR12/ImgCutout/getjpeg.aspx?ra=118.70299999999999&dec=45.721000000000004&width=10&height=10&scale=0.6'
def url_to_image(url):
resp = urllib.request.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
img = url_to_image(url)
plt.imshow(img)
它显示如下内容: 在这里所有的颜色都太蓝了。我尝试了各种可能性来改变`cv2.IMREAD_COLOR`,使用手册、StackOverflow或其他网络上找到的值,如-1、0、1、`cv2.COLOR_BGR2RGB`等,但是我还没有能够得到正确的颜色。我尝试了`cv2.COLOR_BGR2GRAY`,甚至没有显示为灰度。我甚至尝试了this answer,但是`cv2.CV_LOAD_IMAGE_COLOR`似乎已经不存在了...
是否有一个正确的`cv2.imdecode()`标志值,或者`plt.imshow()`的特殊颜色映射,可以给我初始的颜色呢?
matplotlib
需要 RGB 排序,而 OpenCV (非常反常地) 使用BGR
。我认为你需要使用cv2.cvtColor()
在两个之间进行转换。 - Mark Setchell