78Haoyq 2022-05-27 08:18 采纳率: 25%
浏览 16

python代码可运行但有误检查不出来

写了一个python的代码,正确结果应该是原图直方图、线性拉伸直方图、原图、线性拉伸图
但是运行完显示的结果,线性拉伸图的位置显示的还是原图,检查了好多遍也没发现错误,可以帮忙检查哪里错啦吗
(我也不会像别人呢样直接上传一键复制的代码)

import cv2
import numpy as np
import matplotlib.pyplot as plt

def linear_img(img):
img = img
w, h = img.shape[:2] # 读取灰度图高宽

maxout = 80
minout = 20

gray_new = (img - img.min()) / (img.max() - img.min())  # 归一化到0-1

gray_out = gray_new * (maxout - minout)  # maxout=255 minout=0
gray_out = np.uint8(gray_out)

def GrayHist( img ):
# 计算灰度直方图
height, width = img.shape[:2]
grayHist = np.zeros([256], np.uint64)
for i in range(height):
for j in range(width):
grayHist[img[i][j]] += 1
return grayHist

if name == 'main':
# 读取原始图像
img = cv2.imread("img",0)

#线性拉伸
gray_out = linear_img(img)

#计算原图灰度直方图
origin = GrayHist(img)
linear = GrayHist(gray_out)
x = np.arange(256)
# 绘制灰度直方图
plt.figure( num = 1 )
plt.subplot( 2, 2, 1 )
plt.bar(x, origin,color='blue')
plt.title("Origin")
plt.ylabel("number of pixels")

plt.subplot( 2, 2, 2 )
plt.bar(x, linear,color='blue')
plt.title("linear")
plt.ylabel("number of pixels")

plt.subplot( 2, 2, 3 )
plt.imshow( img,cmap = plt.cm.gray)
plt.title( 'Origin' )

plt.subplot( 2, 2, 4 )
plt.imshow( gray_out, cmap = plt.cm.gray)
plt.title( 'linear')
plt.show()
  • 写回答

2条回答 默认 最新

  • 於黾 2022-05-27 09:20
    关注

    什么鬼代码
    linear_img没有返回值的吗
    那gray_out 又是什么,全局变量吗,为什么在linear_img函数里会直接给他赋值
    你格式乱糟糟就罢了,代码也不全

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月27日
  • 创建了问题 5月27日

悬赏问题

  • ¥50 有没有可以远程指导问题
  • ¥15 origin柱状图,分组如何分
  • ¥15 两个不同IP互通的配置命令
  • ¥15 office弹窗激活问题
  • ¥15 明阳风电1.5s,风机重启后报出振动开关触发,无法复位求解。
  • ¥20 ankidroid软件兼容性问题
  • ¥15 请教合适的模型做回归
  • ¥15 stm32cubemx生成代码后利用printf输出浮点数卡死。
  • ¥15 关于#windows#的问题:我是想本地生成pdf的标签文件然后扔给其他的电脑打印,是修改pdf打印格式打印出来这个pdf给那边打印,还是说有其他办法可以生成文件给人家打印
  • ¥15 dy/dx-y/x=x^2sinx通解 解题过程 用一阶线性非齐次公式