Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析cifar-10并将imgs更改为HSV_Python_Image Processing_Hsv - Fatal编程技术网

Python 解析cifar-10并将imgs更改为HSV

Python 解析cifar-10并将imgs更改为HSV,python,image-processing,hsv,Python,Image Processing,Hsv,我正在阅读带有此代码的cifar-10数据集,希望找到一种方法将其更改为HSV。我试图将数据和标签列表放在函数之外,但我遇到了以下错误:UnboundLocalError:assignment之前引用的局部变量“data” 如何取出这些列表,以便我可以更改为HSV,然后更改为数据集的直方图 导入pickle 将numpy作为np导入 从os.path导入联接 从操作系统导入listdir 将matplotlib.pyplot作为plt导入 从TQM导入TQM 将结构导入为st 类数据读取器: 定

我正在阅读带有此代码的cifar-10数据集,希望找到一种方法将其更改为HSV。我试图将数据和标签列表放在函数之外,但我遇到了以下错误:
UnboundLocalError:assignment之前引用的局部变量“data”

如何取出这些列表,以便我可以更改为HSV,然后更改为数据集的直方图

导入pickle
将numpy作为np导入
从os.path导入联接
从操作系统导入listdir
将matplotlib.pyplot作为plt导入
从TQM导入TQM
将结构导入为st
类数据读取器:
定义初始化(self,root\u dir,type='cifar-100'):
self.root\u dir=root\u dir
self.type=type
def从pickle(自身)获取命令:
self.train\u dict=unpickle(join(self.root\u dir,'train'))
self.test\u dict=unpickle(join(self.root\u dir,'test'))
def获取列车数据(自身):
如果self.type==“cifar-100”:
self.get_dict_from_pickle()
data=np.array(self.train_dict[b'data'])
lbls\u sub=np.array(self.train\u dict[b'fine\u labels'))
lbls\u class=np.array(self.train\u dict[b'粗略标签])
返回数据,lbls\U类,lbls\U子类
elif self.type==“cifar-10”:
#数据=[]
#标签=[]
打印(“阅读”)
对于TQM中的文件(listdir(self.root\u dir)):
如果文件分割(“”“)[0]=“数据”:
dict=unpickle(join(self.root\u dir,file\udir))
data.extend(dict[b'data']))
labels.extend(dict[b'labels']))
返回np.array(数据),np.array(标签),无
elif self.type=='mnist':
返回self.read_mnist()
def获取测试数据(自身):
如果self.type==“cifar-100”:
self.get_dict_from_pickle()
data=np.array(self.test_dict[b'data'])
lbls\u sub=np.array(self.test\u dict[b'fine\u labels']))
lbls\u class=np.array(self.test\u dict[b'rough\u labels')
返回数据,lbls\U类,lbls\U子类
elif self.type==“cifar-10”:
数据=np.空(形状=(03072))
标签=[]
对于listdir中的文件(self.root\u dir):
如果文件分割(“”“)[0]=“测试”:
dict=unpickle(join(self.root\u dir,file\udir))
data=np.vstack((数据,dict[b'data']))
打印(数据[data.shape[0]-1])
labels.append(dict[b'labels']))
返回np.array(数据),np.array(标签),无
def将_重塑为_图(自身、数据):
如果self.type==“mnist”:
返回data.shape(data.shape[0],28,28).astype(“uint8”)
返回数据。重塑(data.shape[0],3,32,32)。转置(0,2,3,1)。aType(“uint8”)
def plot_imgs(自身,输入数据,n,随机=假):
data=np.array([d代表数据中的d])
数据=自身。将图重塑为图(数据)
x1=最小值(n//2,5)
如果x1==0:
x1=1
y1=(n//x1)
x=最小值(x1,y1)
y=最大值(x1,y1)
图,ax=plt.子批次(x,y,figsize=(5,5))
i=0
对于范围(x)内的j:
对于范围(y)中的k:
如果是随机的:
i=np.随机选择(范围(长度(数据)))
ax[j][k]。设置轴为off()
ax[j][k].imshow(数据[i:i+1][0])
i+=1
plt.show()
def plot_img(自身,数据):
如果self.type!='mnist':
assert data.shape==(3072,)
数据=数据。重塑(13072)
data=data.shape(data.shape[0],3,32,32).转置(0,2,3,1).aType(“uint8”)
elif self.type==“mnist”:
assert data.shape==(28*28,)
data=data.reformate(1,28,28).astype('uint8')
图,ax=plt.子批次(图尺寸=(5,5))
ax.imshow(数据[0])
plt.show()
def取消勾选(文件):
进口泡菜
打开(文件“rb”)作为fo时:
dict=pickle.load(fo,encoding='bytes')
返回指令

这是我在最后做的事情,它起了作用 """ 从keras.dataset导入cifar10 将matplotlib.pyplot作为plt导入 进口cv2

       (x_train, y_train), (x_test, y_test) = cifar10.load_data()
       for i in range(0,50000):
           hsv_image = cv2.cvtColor(x_train[i] , cv2.COLOR_RGB2HSV)
           hue ,  sat ,  val  =  hsv_image [:,:, 0 ],  hsv_image [:,:, 1 ],  
           hsv_image [:,: , 2 ]
       import numpy as np

       plt.figure(figsize=(10,8))
       plt.subplot(311)                             #plot in the first cell
       plt.subplots_adjust(hspace=.5)
       plt.title("Hue")
       plt.hist(np.ndarray.flatten(hue), bins=8)
       plt.subplot(312)                             #plot in the second cell
       plt.title("Saturation")
       plt.hist(np.ndarray.flatten(sat), bins=4)
       plt.subplot(313)                             #plot in the third cell
       plt.title("Luminosity Value")
       plt.hist(np.ndarray.flatten(val), bins=2)
       plt.show()

您可以使用OpenCV。
image=cv2.cvtColor(image,cv2.COLOR\u BGR2HSV)
但如何达到这一点是我遇到的困难?我将其添加到数据读取器文件中,但给了我此错误“TypeError:参数“%s”的预期Ptr”“你知道那是什么错误吗?我把它放在这里:elif self.type=='cifar-10':data=[]labels=[]打印tqdm(listdir(self.root\u dir))中文件的“读取”:if file.split(''[0]='data':dict=unpickle(join(self.root\u dir,file))data.extend(dict[b'data'])扩展(dict[b'labels'])数据=cv2。cvtColor(数据,cv2.COLOR\u RGB2HSV)尝试
data=data.astype(np.uint8)