【问题标题】:Trying to find the percentage of black pixels in an image (Python 2)试图找出图像中黑色像素的百分比(Python 2)
【发布时间】:2019-03-09 11:46:32
【问题描述】:

黑色像素用 B 表示,而非黑色像素用 N 表示。对于每张图像,计算黑色像素的百分比,精确到十分之一。

我需要输出为 80.0 % 但我得到了 0.0,我的代码有什么问题?任何意见,将不胜感激!谢谢!

line1 = "BBBBBBBBBB"
line2 = "BBNNBBNNBB"
line3 = "BBNNBBNNBB"
line4 = "BBBBBBBBBB"
line5 = "BBBBNNBBBB"
line6 = "BBNBBBBNBB"
line7 = "BBBNNNNBBB"
line8 = "BBBBBBBBBB"

data = ["BBBBBBBBBB", "BBNNBBNNBB", "BBNNBBNNBB", "BBBBBBBBBB", "BBBBNNBBBB", "BBNBBBBNBB", "BBBNNNNBBB", "BBBBBBBBBB"]

def percentBlack(data):
    numB = 0
    numP = 0
    for line in data:
        for pixel in line:
            if pixel == "B":
                numB += 1
            numP += 1
    return round((numB/numP)*100,1)

print(percentBlack(data))

【问题讨论】:

  • 在计算 % 之前,您是否尝试过转换为浮点数/双精度数?你可能正在做一个整数除法:如果结果在 [0, 1] 之间,那么你可能会得到 0 !调试模式告诉你什么变量?

标签: python python-2.7


【解决方案1】:

您的代码在 Python 3 中运行良好。

我相信您的代码是用 Python 2 编写的,其中两个 int 的除法运算符产生一个 int。这是一个可能的解决方法。

def percentBlack(data):
    numB = 0
    numP = 0
    for line in data:
        for pixel in line:
            if pixel == "B":
                numB += 1
            numP += 1
    return round((numB * 100.0/numP),1)

【讨论】:

  • 是的,我在 Python 2 中需要它。很棒的编辑!这就是我需要的。所以如果我需要一个 % 符号,我是否只使用这个打印语句:print(percentBlack(data)), "%"?还有其他建议吗?
  • 应该可以,虽然我通常会做 print(str(percentBlack(data))+ "%")
猜你喜欢
  • 2020-05-29
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2020-09-29
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多