A.Lyapunov 发表于 2020-8-2 11:50:34

Python图片处理

import numpy as np
import cv2
from PIL import Image
def loadimage(i,j):
      im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE)
      im_i_j = np.array(im_i_j)
      im_i_j=im_i_j.flatten()
      return im_i_j
for i in range(1,41):
   for j in range(1,6):
          im_i_j = loadimage(i,j)
im_20_5
用Python读取多个文件夹里面的多张灰色图片,每一张图片转化成矩阵,矩阵按列堆叠为一个列向量Xi,。运行代码时报错NameError: name 'im_20_5' is not defined

livcui 发表于 2020-8-2 11:56:42

本帖最后由 livcui 于 2020-8-2 11:58 编辑

import numpy as np
import cv2
from PIL import Image
def loadimage(i,j):
      im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE)
      im_i_j = np.array(im_i_j)
      im_i_j=im_i_j.flatten()
      return im_i_j
for i in range(1,41):
   for j in range(1,6):
          im_i_j = loadimage(i,j)……
im_20_5 真不是你乱加的?

Twilight6 发表于 2020-8-2 11:57:20


把 im_20_5 去掉就好了吧~

import numpy as np
import cv2
from PIL import Image
def loadimage(i,j):
      im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE)
      im_i_j = np.array(im_i_j)
      im_i_j=im_i_j.flatten()
      return im_i_j
for i in range(1,41):
   for j in range(1,6):
          im_i_j = loadimage(i,j)

qiuyouzhi 发表于 2020-8-2 11:57:34

你代码最后咋多了个im_20_5

A.Lyapunov 发表于 2020-8-2 12:18:36

qiuyouzhi 发表于 2020-8-2 11:57
你代码最后咋多了个im_20_5

想要打印im_20_5这个矩阵

A.Lyapunov 发表于 2020-8-2 12:26:34

livcui 发表于 2020-8-2 11:56
……
im_20_5 真不是你乱加的?

麻烦看我最新的回复

A.Lyapunov 发表于 2020-8-2 12:27:04

我是小白,只是想把这些图片转化成数据矩阵,im_20_5表示文件夹s20下的第5张图片的数据

A.Lyapunov 发表于 2020-8-2 12:27:37

Twilight6 发表于 2020-8-2 11:57
把 im_20_5 去掉就好了吧~

麻烦看7楼

Twilight6 发表于 2020-8-2 12:31:45

A.Lyapunov 发表于 2020-8-2 12:27
麻烦看7楼

你想打印 im_20_5 应该在 for 循环内打印吧:

import numpy as np
import cv2
from PIL import Image
def loadimage(i,j):
      im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE)
      im_i_j = np.array(im_i_j)
      im_i_j=im_i_j.flatten()
      return im_i_j

for i in range(1,41):
   for j in range(1,6):
          im_i_j = loadimage(i,j)
          if i == 20 and j == 5:
            print(im_i_j)

A.Lyapunov 发表于 2020-8-2 12:36:07

Twilight6 发表于 2020-8-2 12:31
你想打印 im_20_5 应该在 for 循环内打印吧:

好的。运行结果:,im_20_5没有值,请问这是为什么

Twilight6 发表于 2020-8-2 12:37:23

A.Lyapunov 发表于 2020-8-2 12:36
好的。运行结果:,im_20_5没有值,请问这是为什么



我发现你的函数完全没有用到 i 和 j 这两个参数...所以说你每次循环的loadimmage 都是同一个情况

A.Lyapunov 发表于 2020-8-2 12:40:49

Twilight6 发表于 2020-8-2 12:37
我发现你的函数完全没有用到 i 和 j 这两个参数...所以说你每次循环的loadimmage 都是同一个情况

函数里面的这句:im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE),这不算用了i,j吗

Twilight6 发表于 2020-8-2 12:41:38

A.Lyapunov 发表于 2020-8-2 12:40
函数里面的这句:im_i_j = cv2.imread('si/j.BMP',cv2.IMREAD_GRAYSCALE),这不算用了i,j吗

这个引号起来的是属于字符串,你要改成这样,用格式化
import numpy as np
import cv2
from PIL import Image
def loadimage(i,j):
      im_i_j = cv2.imread(f's{i}/{j}.BMP',cv2.IMREAD_GRAYSCALE)
      im_i_j = np.array(im_i_j)
      im_i_j=im_i_j.flatten()
      return im_i_j

for i in range(1,41):
   for j in range(1,6):
          im_i_j = loadimage(i,j)
          if i == 20 and j == 5:
            print(im_i_j)

A.Lyapunov 发表于 2020-8-2 12:44:33

Twilight6 发表于 2020-8-2 12:41
这个引号起来的是属于字符串,你要改成这样,用格式化

谢谢,打印出来了
页: [1]
查看完整版本: Python图片处理