gpt4 book ai didi

opencv - 如何将 sin() 应用于 opencv Mat 中的所有元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:33 25 4
gpt4 key购买 nike

我有一个 opencv Mat,如何将 sin() 应用于它的所有元素?是不是一定要用循环获取每一个元素,一个一个计算sin?问候。

最佳答案

我正在使用 python 和 numpy,所以可以这样做:

>>> import cv
>>> import numpy as np
>>> im = cv.LoadImageM("aaa.jpg")
>>> np.sin(im)
array([[[ 0.36319944, 0.46771851, 0.99646664],
[ 0.98024565, -0.49104786, 0.46771851],
[ 0.69605851, -0.9983471 , -0.49104786],
...,
[-0.58777064, -0.79041475, 0.60906792],
[-0.79041475, -0.94252455, 0.36319944],
[ 0.08839871, -0.58777064, -0.94252455]],
etc...

否则,应该很容易改编下面的 python 代码来创建和使用查找表,cv.LUT:

import cv
import math

im = cv.LoadImageM("aaa.jpg")
dst = cv.CreateMat(im.height,im.width, cv.CV_32FC3)
lut_sin = cv.CreateMat(256, 1, cv.CV_32FC3)

for i in xrange(256):
s = math.sin(i)
cv.Set1D(lut_sin, i, (s,s,s,s))

cv.LUT(im,dst,lut_sin)

print cv.Get2D(dst,0,0)
#output, matches above:
(0.36319944262504578, 0.46771851181983948, 0.99646663665771484, 0.0)

对于 float 据,可以使用cv.PolarToCart:

>>> import cv
>>> im = cv.LoadImageM("aaa.jpg")
>>> im2 = cv.CreateMat(im.height, im.width, cv.CV_32FC3)
>>> cv.Convert(im,im2)
>>> sin_of_angle = cv.CreateMat(im.height, im.width, cv.CV_32FC3)
>>> cv.PolarToCart(None,im2,None,sin_of_angle,0)
>>> cv.Get1D(sin_of_angle,0)
(0.36319947242736816, 0.46771851181983948, 0.99646669626235962, 0.0)
>>> cv.Get1D(sin_of_angle,1)
(0.98024564981460571, -0.49104788899421692, 0.46771851181983948, 0.0)

您也可以使用它轻松获取 cos 值。对于弧度,您可以将最后一个参数切换为 True

关于opencv - 如何将 sin() 应用于 opencv Mat 中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434025/

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