Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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/5/spring-mvc/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中的数据扩充抛出了一个错误;int()参数必须是字符串、类似字节的对象或数字,而不是';dict'&引用;_Python_Affinetransform_Gaussianblur_Data Augmentation - Fatal编程技术网

python中的数据扩充抛出了一个错误;int()参数必须是字符串、类似字节的对象或数字,而不是';dict'&引用;

python中的数据扩充抛出了一个错误;int()参数必须是字符串、类似字节的对象或数字,而不是';dict'&引用;,python,affinetransform,gaussianblur,data-augmentation,Python,Affinetransform,Gaussianblur,Data Augmentation,我正在尝试加载文件夹中的所有图像,扩充每个图像并将其保存到不同的存储库中 我可以通过硬编码路径和图像名称来扩充,但是,当我试图存储所有图像的路径,然后处理循环时,它不起作用,并抛出标题中提到的错误(另外:int()参数必须是字符串、类似字节的对象或数字,而不是“dict” ).在后面的部分中,在增强图像后,我将输出存储在不同的文件夹中。守则亦载列如下: 如果有人能提供这个问题的解决方案,那将非常有帮助 将仪表导入为ia 从imgaug进口增强器作为iaa 将numpy作为np导入 导入熊猫作为p

我正在尝试加载文件夹中的所有图像,扩充每个图像并将其保存到不同的存储库中

我可以通过硬编码路径和图像名称来扩充,但是,当我试图存储所有图像的路径,然后处理循环时,它不起作用,并抛出标题中提到的错误(另外:int()参数必须是字符串、类似字节的对象或数字,而不是“dict” ).在后面的部分中,在增强图像后,我将输出存储在不同的文件夹中。守则亦载列如下:

如果有人能提供这个问题的解决方案,那将非常有帮助

将仪表导入为ia
从imgaug进口增强器作为iaa
将numpy作为np导入
导入熊猫作为pd#数据处理、CSV文件I/O(例如d.read#U CSV)
导入操作系统
从全局导入全局
导入图像
ia.种子(20)
#chdir('C:/Users/Madhav/Desktop/RIC/data/images\u 001/images')
img={os.path.basename(x):glob中x的x(os.path.join('C:/Users/Madhav/Desktop/FinalSem/Data_Images/'、'Images*'、'*'和'*.png'))
#img=imageio.imread(“00000001_000.png”)#读取您的图像
images=np.array(
[img表示范围(32)],dtype=np.uint8)#32表示使用以下方法创建32个增强图像。
顺序=iaa.顺序(
[
iaa.Fliplr(0.5),
iaa.作物(百分比=(0,0.1)),
有时(0.5,iaa.GaussianBlur(sigma=(0,0.5)),
iaa.标准化((0.75,1.5)),
iaa.加性高斯噪声(loc=0,标度=(0.0,0.05*255),每通道=0.5),
iaa.乘法((0.8,1.2),每通道=0.2),
仿射(
鳞片={
“x”:(0.8,1.2),
“y”:(0.8,1.2)
},
换算成={
“x”:(-0.2,0.2),
“y”:(-0.2,0.2)
},
旋转=(-25,25),
剪力=(-8,8))
],
随机_顺序=真)#以随机顺序应用增广器
images\u aug=序列增强图像(图像)
对于范围(32)内的i:
imwrite(str(i)+'C:/Users/Madhav/Desktop/FinalSem/Augmented_Generated/Aug.png',images_Aug[i])
#写入所有更改的图像
打字错误
回溯(最近一次呼叫最后一次)
在里面
18#img=imageio.imread(“00000001_000.png”)#读取您的图像
19图像=np.array(
--->20[img表示范围内(32)],dtype=np.uint8)#32表示使用以下方法创建32个增强图像。
21
22序列=iaa序列(
TypeError:int()参数必须是字符串、类似于对象的字节或数字,而不是“dict”

我不熟悉imgauge,但我认为这应该是可行的:

from os import path
from glob import glob
from scipy.ndimage import imread
import numpy as np

# Here i'm actually opening each image, and putting its pixel data in
# numpy arrays
images = [ imread(imgpath) for imgpath in glob(path.join('images', '*.png')) ]
# 'images' doesn't need to be a numpy array, it can be a regular
# python list (array). In fact, it can't be if the images are of
# different sizes
从那时起,您可以继续使用原始代码


请注意,如果您有很多图像,您可能会遇到内存问题。在这种情况下,您需要将列表分成更小的批(就像您对“range(32)”所做的那样)。如果您需要帮助,请添加注释。

下面是代码,如果这是我自己犯的一个非常愚蠢的错误,请道歉

from PIL import Image
import imgaug as ia
from imgaug import augmenters as iaa

# Here i'm actually opening each image, and putting its pixel data in
# numpy arrays
images = [imageio.imread(imgpath) for imgpath in     glob(path.join('C:/Users/Madhav/Desktop/Final Sem/Data_Images/', '*.png')) ]
# This converts the list from before into a numpy array. If all images have the
# same size, 'images' will be a 'true' numpy array. Otherwise, it's going to be
# a numpy 'collection' (I don't know the real name)
images = np.array(images)

#print (images.shape)


seq = iaa.Sequential(
    [
        iaa.Fliplr(0.5),  
        iaa.Crop(percent=(0, 0.1)),            
        iaa.Sometimes(0.5, iaa.GaussianBlur(sigma=(0, 0.5))),        
        iaa.ContrastNormalization((0.75, 1.5)),         
        iaa.AdditiveGaussianNoise(
            loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),    
        iaa.Multiply((0.8, 1.2), per_channel=0.2),
        iaa.Affine(
            scale={
                "x": (0.8, 1.2),
                "y": (0.8, 1.2)
            },
            translate_percent={
                "x": (-0.2, 0.2),
                "y": (-0.2, 0.2)
            },
            rotate=(-25, 25),
            shear=(-8, 8))
    ],
random_order=True)  # apply augmenters in random order

images_aug = seq.augment_images(images)
for i in range(32):
imageio.imwrite(str(i)+'C:/Users/Madhav/Desktop/Final     Sem/Augmented_Generated/*.png', images_aug[i])

构造函数
np.array()
使用
dtype
np。uint8
需要一个8位整数的列表作为输入,但您向它传递了一个字典列表。为什么要这样做?我在尝试传递图像的路径是否有帮助。是否有其他方法?或者解决此问题的方法?图像真的需要是一个numpy数组吗?@bastiengirsc从,
images
判断hig可能只是一个numpy数组列表。是的,这正是我所期望的。我仍然提供了一个创建单个numpy数组的解决方案。这在某些情况下可能会有所帮助(对所有图像进行裁剪、遮罩、算术等)非常感谢您的帮助。这解决了这个问题。我一组一组地传递了它们,它工作得很好。感谢againHi Bastien,它在一个中工作,但在另一个中不工作,这可能是因为某些库问题。我安装了Scipy和其他可能需要的库。但它仍然说:“ImportError:无法导入名称‘imread’”我想你刚才评论的应该是同样的方式:
imageio.imread
怪异。你是如何安装你的库的?你是直接使用pip吗?virtualenv?conda?我是使用condaCan?你把它添加到“iaa.Sequential”行之前的:
打印图像[0].shape
我已经在我的答案中添加了一个完整的工作版本。你能检查一下吗?仍然不工作,它实际上在“images\u aug=seq.augment\u images(images)”行上抛出了一个错误,我猜在将其转换为数组后无法正确地对其进行扩展。错误再次显示“断言错误:预期的3d/4d表单数组”(N,高度,宽度)或(N,高度,宽度,通道),得到形状(99),“你能分享一些图像吗?并告诉我“图像”数组的形状吗?啊哈!所以你的图像大小不一样,对吗?