鱼C论坛

 找回密码
 立即注册
查看: 1837|回复: 16

[已解决]【不懂就问】 python怎么批量将RGB转为灰度图,这边报错了。。

[复制链接]
发表于 2020-8-1 16:12:25 | 显示全部楼层 |阅读模式

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

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

x
求助!!!
最佳答案
2020-8-1 16:16:28
本帖最后由 Twilight6 于 2020-8-1 16:19 编辑



if filexten == '.png' or '.JPG' 条件永远符合,因为 Python 判断的是  (filexten == '.png') or ('.JPG')

而字符串只要不为空,那么返回的都是 True,所以这里的 (filexten == '.png') or ('.JPG')  可以视为 (filexten == '.png') or (True)

又因为 or 只要有一个条件为 True ,那么条件就成立,所以这里 filexten == '.png' or '.JPG'  应该改成 filexten == '.png' or filexten == '.JPG'   即可

代码改成这样:
from PIL import Image
import os

path = os.getcwd() # 获取当前路径
file_list = os.listdir(r'F:\ground fissure experiment\7.29\X5S\input')
for file in file_list:
    filename = os.path.splitext(file)[0]
    filexten = os.path.splitext(file)[1]
    if filexten == '.png' or filexten == '.JPG':
        I = Image.open(file)
        L = I.convert('L')
        L.save('g '+file)

错误

错误

源码

源码

文件源

文件源
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-1 16:13:08 | 显示全部楼层
from PIL import Image
import os

path = os.getcwd() # 获取当前路径
file_list = os.listdir(r'F:\ground fissure experiment\7.29\X5S\input')
for file in file_list:
    filename = os.path.splitext(file)[0]
    filexten = os.path.splitext(file)[1]
    if filexten == '.png' or '.JPG':
        I = Image.open(file)
        L = I.convert('L')
        L.save('g '+file)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:13:41 | 显示全部楼层
噢噢是批处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:16:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-1 16:19 编辑



if filexten == '.png' or '.JPG' 条件永远符合,因为 Python 判断的是  (filexten == '.png') or ('.JPG')

而字符串只要不为空,那么返回的都是 True,所以这里的 (filexten == '.png') or ('.JPG')  可以视为 (filexten == '.png') or (True)

又因为 or 只要有一个条件为 True ,那么条件就成立,所以这里 filexten == '.png' or '.JPG'  应该改成 filexten == '.png' or filexten == '.JPG'   即可

代码改成这样:
from PIL import Image
import os

path = os.getcwd() # 获取当前路径
file_list = os.listdir(r'F:\ground fissure experiment\7.29\X5S\input')
for file in file_list:
    filename = os.path.splitext(file)[0]
    filexten = os.path.splitext(file)[1]
    if filexten == '.png' or filexten == '.JPG':
        I = Image.open(file)
        L = I.convert('L')
        L.save('g '+file)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-1 16:24:06 | 显示全部楼层
Twilight6 发表于 2020-8-1 16:16
if filexten == '.png' or '.JPG' 条件永远符合,因为 Python 判断的是  (filexten == '.png') or ('.J ...

谢谢回复,可是还是一样报错,错误没变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:25:11 | 显示全部楼层
706775662 发表于 2020-8-1 16:24
谢谢回复,可是还是一样报错,错误没变



报错内容发上来,我这里刚刚测试正常运行了:

2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:26:34 | 显示全部楼层
Twilight6 发表于 2020-8-1 16:25
报错内容发上来,我这里刚刚测试正常运行了:

"D:\Program Files (x86)\python3.8\python.exe" C:/Users/Pantera/PycharmProjects/untitled2/grey.py
Traceback (most recent call last):
  File "C:/Users/Pantera/PycharmProjects/untitled2/grey.py", line 14, in <module>
    I = Image.open(file)
  File "D:\Program Files (x86)\python3.8\lib\site-packages\PIL\Image.py", line 2843, in open
    fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'X5_10.JPG'

Process finished with exit code 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:28:10 | 显示全部楼层
706775662 发表于 2020-8-1 16:26
"D:\Program Files (x86)\python3.8\python.exe" C:/Users/Pantera/PycharmProjects/untitled2/grey.py
...


你忘记将你的 open 加上路径了,因为你的工作目录不在  F:\ground fissure experiment\7.29\X5S\input 下面
from PIL import Image
import os

path = os.getcwd() # 获取当前路径
file_list = os.listdir(r'F:\ground fissure experiment\7.29\X5S\input')
for file in file_list:
    filename = os.path.splitext(file)[0]
    filexten = os.path.splitext(file)[1]
    if filexten == '.png' or filexten == '.JPG':
        I = Image.open(r'F:\ground fissure experiment\7.29\X5S\input'+os.sep+file)
        L = I.convert('L')
        L.save('g '+file)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:29:25 | 显示全部楼层
Twilight6 发表于 2020-8-1 16:28
你忘记将你的 open 加上路径了,因为你的工作目录不在  F:\ground fissure experiment\7.29\X5S\input  ...

额,我真的太菜了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:31:18 | 显示全部楼层
706775662 发表于 2020-8-1 16:29
额,我真的太菜了

哈哈 细心点就好~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:35:34 | 显示全部楼层
我来晚了一步,我都观察好久了,也没到我出场的份
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:36:57 | 显示全部楼层
陈尚涵 发表于 2020-8-1 16:35
我来晚了一步,我都观察好久了,也没到我出场的份

哈哈哈,也谢谢你呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:37:51 | 显示全部楼层
706775662 发表于 2020-8-1 16:36
哈哈哈,也谢谢你呀

我都没回答,感谢我什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:38:53 | 显示全部楼层
这边补个完整的,还要加油呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 16:39:26 | 显示全部楼层
from PIL import Image
import os

path = r'F:\ground fissure experiment\7.29\X5S\input'  # 源文件目录
path1 = r'F:\ground fissure experiment\7.29\X5S\gray'  # 输出文件目录
file_list = os.listdir(path)
for file in file_list:
    filename = os.path.splitext(file)[0]
    filexten = os.path.splitext(file)[1]
    if filexten == '.png' or filexten == '.JPG':
        I = Image.open(path+"/"+file)
        L = I.convert('L')
        L.save(path1 + "/" + 'g ' + file) # 保存在新的文件路径下 "/"一定别忘了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:40:25 | 显示全部楼层
706775662 发表于 2020-8-1 16:38
这边补个完整的,还要加油呀

嗯,加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 17:00:38 | 显示全部楼层
706775662 发表于 2020-8-1 16:29
额,我真的太菜了

选最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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