def image_to_array_1dim(img,w,h): img_r,img_g,img_b = img.split() # print("img.size:",img.size) #416*416 #如果转换成numpy数组,可以用shape。np.arrary(img) image_array_r = np.array(img_r,dtype='float32')/255 # 将RGB归一化 image_array_g = np.array(img_g,dtype='float32')/255 image_array_b = np.array(img_b,dtype= 'float32')/255 # print("image_array_r.shape:",image_array_r.shape) # (416, 416) image_array_r = image_array_r.reshape(w*h,) # reshape至一维 image_array_g = image_array_g.reshape(w*h,) image_array_b = image_array_b.reshape(w*h,) # print("image_array_r.shape:",image_array_r.shape) # (173056,) img_array_3 = [image_array_r,image_array_g,image_array_b] # 合并成三维,再reshape至一维 img_array_3 = np.array(img_array_3) img_array_3 = img_array_3.reshape(3*w*h,)
时间: 2024-04-06 13:33:17 浏览: 31
这段代码中,首先使用PIL库中的split()函数将图像拆分为R、G、B三个通道的图像。接着将每个通道的图像转换为numpy数组,并将像素值归一化到0到1之间。然后,将每个通道的数组reshape为一维数组,最后将三个通道的数组合并成一个三维数组,并将其reshape为一维数组。最终返回的就是一个一维的numpy数组。
相关问题
def yolo_meminout(frame_in,img_w,img_h,frame_out): ## image preprocess start start_time = time.time() start_time_total = start_time img_boxed = letterbox_image(frame_in,416,416) # img_boxed.save("./pictures/pictrue_boxed.jpg") img_array_3_416_416 = image_to_array_1dim(img_boxed,416,416) input_tmp_img = float32_int(img_array_3_416_416) end_time = time.time() image_preprocess = end_time - start_time # image preprocess end ## load image to memory(DRAM) start start_time = time.time() np.copyto(img_base_buffer[0:259584],input_tmp_img) end_time = time.time() load_image_to_memory = end_time - start_time
这段代码是用来进行图像预处理和将图像加载到内存中的,其中使用了一些自定义的函数,如letterbox_image和image_to_array_1dim。可以看出,图像被缩放到了416x416的大小,并且被转换为了一维的float32类型数组。然后,这个数组被拷贝到了内存中。这个函数的返回值不清楚,可能是预处理和加载所用的时间。
def data_generator(): for folder in os.listdir("D:/wjd"): for file in os.listdir("D:/wjd/"+folder): file_paths = glob.glob('D:/wjd/*.png') for file_path in file_paths: img = Image.open(file_path) img = img.resize((224, 224)) img_arr = np.array(img) img_tensor = tf.convert_to_tensor(img_arr) img_tensor = tf.expand_dims(img_tensor, axis=0) print(img_tensor.shape) print(img_tensor.shape) # 输出张量的形状,我感觉不对,我应该删除那两行代码啊
是的,你是正确的。在这个数据生成器函数中,`print(img_tensor.shape)` 这行代码是不必要的,因为它只是输出张量的形状,而不是将它们返回给调用者。因此,你可以将这两行代码删除,如下所示:
```python
def data_generator():
for folder in os.listdir("D:/wjd"):
for file in os.listdir("D:/wjd/"+folder):
file_paths = glob.glob('D:/wjd/*.png')
for file_path in file_paths:
img = Image.open(file_path)
img = img.resize((224, 224))
img_arr = np.array(img)
img_tensor = tf.convert_to_tensor(img_arr)
img_tensor = tf.expand_dims(img_tensor, axis=0)
yield img_tensor
```
这样修改后,这个函数将会生成一个张量序列,每个张量代表一个图片。你可以将这个函数作为参数传递给你的模型,用于训练和测试。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)