Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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中在数据集中保存图片时的自持问题_Python_Numpy_Tensorflow_Computer Vision_Numpy Ndarray - Fatal编程技术网

python中在数据集中保存图片时的自持问题

python中在数据集中保存图片时的自持问题,python,numpy,tensorflow,computer-vision,numpy-ndarray,Python,Numpy,Tensorflow,Computer Vision,Numpy Ndarray,我提供了一个数据集,用于学习CNN,使用数据增强技术在更大的图像中检测所杜科人。 我的数据集使用边缘检测的soduko功能来学习CNN。在第一步中,我编写了一个数据加载器来获取图片并将其保存到一个n维numpy数组(X) def加载_数据(n): X=np.ndarray((n,数据大小,数据大小,1)) Y=[] truenumber=1 falsenumber=1 对于范围(n)中的i: 如果i%int((n/100))==0: 打印(“{}已加载数据的前一部分”。格式(int(i/n*10

我提供了一个数据集,用于学习CNN,使用数据增强技术在更大的图像中检测所杜科人。 我的数据集使用边缘检测的soduko功能来学习CNN。在第一步中,我编写了一个数据加载器来获取图片并将其保存到一个n维numpy数组(X)

def加载_数据(n):
X=np.ndarray((n,数据大小,数据大小,1))
Y=[]
truenumber=1
falsenumber=1
对于范围(n)中的i:
如果i%int((n/100))==0:
打印(“{}已加载数据的前一部分”。格式(int(i/n*100)))
rnd=np.random.randint(8360)
如果rnd<4000:
pic=cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\True\{}.png'。格式(truenumber),cv2.imread\u灰度)
pic=np.resize(pic,(数据大小,数据大小))
truenumber+=1
如果truenumber>6380:继续
Y.1(1)
对于范围内的(数据大小):
对于范围内的b(数据大小):
X[i,a,b,0]=pic[a,b]
其他:
pic=cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\False\{}.png'。格式(falsenumber),cv2.imread\u灰度)
pic=np.resize(pic,(数据大小,数据大小))
如果falsenumber>2080:继续
假数字+=1
Y.append(0)
对于范围内的(数据大小):
对于范围内的b(数据大小):
X[i,a,b,0]=pic[a,b]
Y=np.asarray(Y)
返回X,Y
正如您所看到的,假数据和真数据的保存方法都是相同的,但这里我们有:


正如你所看到的,对于真实的数字,这是一个不应该的阈值。任何人都可能知道原因吗?

请指定您在代码中处理阈值部分的确切位置。另外,您能否澄清一下,为什么不使用Keras
ImageDataGenerator.flow\u from\u directory
加载图像并将其转换为Numpy数组?Piont是我从未对图像执行过任何阈值,它自己执行!关于使用keras,没有具体的原因。我只是用
imread
做的。谢谢你的建议,我会用它。你能不能指定你在代码中处理阈值部分的确切位置。另外,您能否澄清一下,为什么不使用Keras
ImageDataGenerator.flow\u from\u directory
加载图像并将其转换为Numpy数组?Piont是我从未对图像执行过任何阈值,它自己执行!关于使用keras,没有具体的原因。我只是用
imread
做的。谢谢你的建议,我会用的。
def load_data(n):
X = np.ndarray((n, datasize, datasize,1) )
Y = []
truenumber = 1
falsenumber = 1
for i in range(n):
    if i % int((n/100)) == 0 :
        print("{} precent of data loaded".format(int(i / n * 100)))

    rnd = np.random.randint(8360)

    if rnd < 4000:
        pic = cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\True\{}.png'.format(truenumber) , cv2.IMREAD_GRAYSCALE)
        pic = np.resize(pic, (datasize,datasize))
        truenumber += 1
        if truenumber > 6380: continue
        Y.append(1)
        for a in range(datasize):
            for b in range(datasize):
                X[i,a,b,0] = pic[a,b]

    else:
        pic = cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\False\{}.png'.format(falsenumber) , cv2.IMREAD_GRAYSCALE)
        pic = np.resize(pic, (datasize,datasize))
        if falsenumber > 2080: continue
        falsenumber += 1
        Y.append(0)
        for a in range(datasize):
            for b in range(datasize):
                X[i, a, b, 0] = pic[a, b]

Y = np.asarray(Y)

return X , Y