gpt4 book ai didi

python - Math.log() 处理数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:23 26 4
gpt4 key购买 nike

我正在使用 python,我试图在没有 numpy 的情况下对图像进行强度转换。所以在这个过程中,我需要用 math.log() 记录()图像的像素,但看起来 math.log() 不能像 numpy 那样处理数组。

我应该手动循环还是有其他选择?

这是一些代码:

import cv2 as cv
import numpy as np
import math

img = cv.imread("272.jpg", cv.IMREAD_GRAYSCALE)

print(img)
# Output :
# array([[ 80, 72, 58, ..., 74, 77, 82],
# [ 65, 59, 50, ..., 87, 88, 91],
# [ 50, 47, 43, ..., 120, 117, 117],
# ...,
# [168, 158, 144, ..., 44, 52, 65],
# [168, 157, 142, ..., 69, 74, 85],
# [170, 156, 138, ..., 92, 94, 100]], dtype=uint8)

print(np.log(img))
# this works

print(math.log(img))
# error

最佳答案

通过在列表元素上运行 math.log(),您将收到以下错误:TypeError: only size-1 arrays can be converted to Python scalars,例如, size-1 数组是指多维数组的一个元素。例如,map.log(img[0][0]) 可以工作,因为它是一个元素,因此如果你想计算日志,在数学库上你必须以最大复杂度 O 循环(N^2)。 Python 通过 list comprehension 解决这个问题,下面的代码显示了一种可能的解决方案(尽管您可以探索更快的解决方案):

import cv2 as cv
import numpy as np
import math

img = cv.imread("272.jpg", cv.IMREAD_GRAYSCALE)

img_log = [[math.log(j) for j in img[i]] for i in range(len(img))]

print(img_log)

关于python - Math.log() 处理数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58091697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com