鱼C论坛

 找回密码
 立即注册
查看: 1247|回复: 13

[已解决]Python图片处理

[复制链接]
发表于 2020-8-2 11:50:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
最佳答案
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吗

[b]这个引号起来的是属于字符串,你要改成这样,用格式化
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)
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 真不是你乱加的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 11:57:34 | 显示全部楼层
你代码最后咋多了个im_20_5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:18:36 | 显示全部楼层
qiuyouzhi 发表于 2020-8-2 11:57
你代码最后咋多了个im_20_5

想要打印im_20_5这个矩阵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:26:34 | 显示全部楼层
livcui 发表于 2020-8-2 11:56
……
im_20_5 真不是你乱加的?

麻烦看我最新的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:27:04 | 显示全部楼层
我是小白,只是想把这些图片转化成数据矩阵,im_20_5表示文件夹s20下的第5张图片的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:27:37 | 显示全部楼层
Twilight6 发表于 2020-8-2 11:57
把 im_20_5 去掉就好了吧~

麻烦看7楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 12:31:45 | 显示全部楼层

你想打印 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:36:07 | 显示全部楼层
Twilight6 发表于 2020-8-2 12:31
你想打印 im_20_5 应该在 for 循环内打印吧:

好的。运行结果:[None],im_20_5没有值,请问这是为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 12:37:23 | 显示全部楼层
A.Lyapunov 发表于 2020-8-2 12:36
好的。运行结果:[None],im_20_5没有值,请问这是为什么



我发现你的函数完全没有用到 i 和 j 这两个参数...所以说你每次循环的  loadimmage 都是同一个情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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吗

[b]这个引号起来的是属于字符串,你要改成这样,用格式化
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)
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 12:44:33 | 显示全部楼层
Twilight6 发表于 2020-8-2 12:41
这个引号起来的是属于字符串,你要改成这样,用格式化

谢谢,打印出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表