gpt4 book ai didi

opencv - 如何计算IplImage的 “Arctan”和 “Pow”?

转载 作者:行者123 更新时间:2023-12-02 17:49:26 26 4
gpt4 key购买 nike

我正在尝试使用OpenCvSharp计算灰度图像的梯度大小和方向。问题在于“Pow”功能似乎不适用于IplImage。
我也想知道如何计算FeatureImage的tan-1(或arctan)。
谢谢

        using (IplImage cvImage = new IplImage("grayImage.png", LoadMode.AnyDepth | 
LoadMode.GrayScale))
using (IplImage dstXImage = new IplImage(cvImage.Size, cvImage.Depth, cvImage.NChannels))
using (IplImage dstYImage = new IplImage(cvImage.Size, cvImage.Depth, cvImage.NChannels))
{
float[] data = { 0, -1, -1, 2 };
CvMat kernel = new CvMat(2, 2, MatrixType.F32C1, data);

Cv.Sobel(cvImage, dstXImage, 1, 0, ApertureSize.Size1);
Cv.Sobel(cvImage, dstYImage, 0, 1, ApertureSize.Size1);

Cv.Normalize(dstXImage, dstXImage, 1.0, 0, NormType.L1);
Cv.Filter2D(cvImage, dstXImage, kernel, new CvPoint(0, 0));

Cv.Normalize(dstYImage, dstYImage, 1.0, 0, NormType.L1);
Cv.Filter2D(cvImage, dstYImage, kernel, new CvPoint(0, 0));

// to calculate gradient magnitude, sqrt[(dy)power 2 + (dx)power 2]
dstXImage.Mul(dstXImage, dstXImage);
dstYImage.Mul(dstYImage, dstYImage);
IplImage dstXYImage = new IplImage(cvImage.Size, cvImage.Depth, cvImage.NChannels);
dstXImage.Add(dstYImage, dstXYImage);
dstXYImage.Pow(dstXYImage, 1/2); //this line not working,output image is black page


// to calculate gradient orientation, arctan(dy/dx)
IplImage thetaImage = new IplImage(cvImage.Size, cvImage.Depth, cvImage.NChannels);
dstYImage.Div(dstXImage, thetaImage); //afterwards need help to calculate arctan


using (new CvWindow("SrcImage", cvImage))
using (new CvWindow("DstXImage", dstXImage))
using (new CvWindow("DstYImage", dstYImage))
using (new CvWindow("DstXYImage", dstXYImage))
using (new CvWindow("thetaImage", thetaImage))

{
Cv.WaitKey(0);
}

最佳答案

您可以根据需要使用“cartToPolar”函数。
此函数计算2D vector 的大小和 Angular 。

大小(I)= sqrt(x(I)^ 2 + y(I)^ 2),
angle(I)= atan2(y(I),x(I))[* 180 / pi]

例如:

IplImage dstXYImage;
IplImage thetaImage;
CartToPolar(dstXImage, dstYImage, dstXYImage, thetaImage, true);

关于opencv - 如何计算IplImage的 “Arctan”和 “Pow”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738119/

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