鱼C论坛

 找回密码
 立即注册
查看: 1022|回复: 14

请教关于如何对灰度图的灰度值进行循环遍历处理

[复制链接]
发表于 2018-10-21 22:36:44 | 显示全部楼层 |阅读模式

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

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

x
我希望将灰度图每一列的灰度值的最大值找出来,想通过一个循环来实现,但是为什么会出现以下情况:
b=np.amax(gray[:,1],axis=0)#求出第一列最大值的位置
print(b)
print(gray[b,1])#求出最大值

以上三行代码的输出结果是:235,156

而我打算进行循环的时候:
for i in range(gray.shape[0]):# i在gray图的行
     for j in range(gray.shape[1]):# 就在gray图的列
         a = np.amax(gray[:,1], axis=0)
         print(gray[:,1])

输出的结果是:gray[:,1]不是第一列的列表,而是将输出几十个相同的第一列列表,因而会输出几十个相同的最大值的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-21 22:54:47 | 显示全部楼层
b=np.amax(gray[:,1],axis=0)这个语句能实现么??
gray[:,1]是一列,怎么有axis得到的也不是位置,是那个点的灰度值
你这打印就是从头到尾打印gray灰度表的第一列啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 22:58:31 | 显示全部楼层
for j in range(gray.shape[1]):
        print(np.max(gray[:],j))
这才是打印每一列灰度最大值吧,不过之前也告诉了不用循环的方法

np.amax(gray,axis=0)返回每一列最大灰度的集合
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 23:04:40 | 显示全部楼层
塔利班 发表于 2018-10-21 22:58
for j in range(gray.shape[1]):
        print(np.max(gray[:],j))
这才是打印每一列灰度最大值吧,不过之前也 ...

嗯嗯,谢谢了,就是我需要得到第一列的最大值之后,设定阈值,然后对该列进行灰度值的处理,然后利用循环对整张图片进行处理!辛苦您,再帮我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:04:57 | 显示全部楼层
呃,上一帖不就是一样的问题??上帖还没解决~~
你的 gray 不是 RGB 转过来的吗?剩下二维而已,然后 np.amax() 就可以把每一列的最大值给找出来了不是?
你 gray[:,1] 只会是第一行……怪怪的……

你的循环始终是是 gray[:,1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:06:34 | 显示全部楼层
蛋蛋N 发表于 2018-10-21 23:04
嗯嗯,谢谢了,就是我需要得到第一列的最大值之后,设定阈值,然后对该列进行灰度值的处理,然后利用循环 ...

你要怎么处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 23:15:13 | 显示全部楼层

要将每一列最大值位置附近的前后10个点灰度值不变,其余的点灰度值都要让它为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-21 23:16:49 | 显示全部楼层
claws0n 发表于 2018-10-21 23:04
呃,上一帖不就是一样的问题??上帖还没解决~~
你的 gray 不是 RGB 转过来的吗?剩下二维而已,然后 np.a ...

嗯嗯,辛苦了,我就是打算要第一列的,我现在问题卡在如何创造一个循环,就是我需要得到第一列的最大值之后,设定阈值,然后对该列进行灰度值的处理,然后利用循环对整张图片进行处理!所以我打算先得出第一列这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:17:43 | 显示全部楼层
蛋蛋N 发表于 2018-10-21 23:04
嗯嗯,谢谢了,就是我需要得到第一列的最大值之后,设定阈值,然后对该列进行灰度值的处理,然后利用循环 ...

那你是问错问题了~第一行最大值的话,可以这样做
b = np.amax(gray, axis=0)
col_max = b[0]

然后就是你要怎么处理的问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:20:52 | 显示全部楼层
蛋蛋N 发表于 2018-10-21 23:15
要将每一列最大值位置附近的前后10个点灰度值不变,其余的点灰度值都要让它为0

threshold 就好啦
b = np.amax(gray, axis=0)
gray[gray <= b[0] - 10] = 0  #10 自己调整,但是不是 10 个位置,而是灰阶值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-21 23:26:11 | 显示全部楼层
import numpy as np
for j in range(gray.shape[1]):
        m=np.max(gray[:],j)
        t=list(g[:],j)
        ind=t.index(m)
        for i in range(gray.shape[0]):
            if abs(i-ind)>10:
                gray[i][j]=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-22 10:55:19 | 显示全部楼层

谢谢您,提供的指导,很有方向性,t=list(gray[:],j)这句出现一些错误:list() takes at most 1 argument (2 given),我自己先去尝试敲敲代码。感谢您提供的帮助,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-22 11:01:10 | 显示全部楼层
t=list(g[:,j])应该是这样,我括号位置错啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-22 11:29:08 | 显示全部楼层
塔利班 发表于 2018-10-22 11:01
t=list(g[:,j])应该是这样,我括号位置错啦


谢谢您,这个问题在调试的时候也有摸索到,现在在调试下一个问题,好像又卡了,初学者对这个不是特别精通,麻烦您了
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-22 11:37:19 | 显示全部楼层
m=np.max(gray[:,j])这里也要改,
没事,咱俩差不多,半斤八两
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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