惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
J
Java Code Geeks
V
Visual Studio Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
宝玉的分享
宝玉的分享
博客园 - Franky
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
H
Heimdal Security Blog
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
M
MIT News - Artificial intelligence
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
T
The Blog of Author Tim Ferriss

博客园 - 凤凰_1

多边形近似:最小周长多边形算法MPP 多阈值otsu的opencv实现 cvIsInf与cvIsNan函数 Mandelbrot set 以parallel_for_实现 opencv的并行操作parallel_for_的问题 CV_WRAP和CV_EXPORTS_W opencv超级像素示例 opencv中自定义的双线性二次插值的图像旋转及缩放 在Qt中,如何在sheets末端添加新的sheet opencv4.x 中的plot函数绘制二维Mat C++版DNN最简主体框架 C++版全连接神经网络 C++版加载MNIST图像集合 C++版的神经网络训练用的图像集合加载 c\c++宏定义,四个参数求最大值 - 凤凰_1 - 博客园 自定义c++二维动态数组 用Cmake 编译OpenCV常见的错误 Opencv中的dft()和idft()示例 C++仿Matlab的bsxfun函数
在Opencv中自定义了一个相位函数,获取复数矩阵的相位
凤凰_1 · 2025-03-22 · via 博客园 - 凤凰_1
Mat& getPhase(Mat&complex)
{
    CV_Assert(complex.channels()==2&&complex.depth()>4);
    int rows=complex.rows,cols=complex.cols;
    int depth=complex.depth();
    static Mat Angle(rows,cols,depth,Scalar::all(0));
    switch (depth) {
    case CV_32F:
    {
        float*pc=(float*)complex.data;
        float*pa=(float*)Angle.data;
        for(int i=0;i<rows*cols;i++)
        {
            if(pc[0]==0&&pc[1]>0)
                pa[0]=M_PI/2;
            else if(pc[0]==0&&pc[1]<0)
                pa[0]=-M_PI/2;
            else
                pa[0]=fastAtan2(pc[1],pc[0])*M_PI/180;
            pa+=1;
            pc+=2;

        }
    }
        break;
    case CV_64F:
    {
        double*pc=(double*)complex.data;
        double*pa=(double*)Angle.data;
        for(int i=0;i<rows*cols;i++)
        {
            if(pc[0]==0&&pc[1]>0)
                pa[0]=M_PI/2;
            else if(pc[0]==0&&pc[1]<0)
                pa[0]=-M_PI/2;
            else
                pa[0]=fastAtan2(pc[1],pc[0])*M_PI/180;
            pa+=1;
            pc+=2;

        }
    }
        break;
    }
    return Angle;
}
void getPhase(Mat&complex,Mat&Angle)
{
    CV_Assert(complex.channels()==2&&complex.depth()>4);
    int rows=complex.rows,cols=complex.cols;
    int depth=complex.depth();
    if(Angle.empty())
        Angle.create(rows,cols,depth);
    switch (depth) {
    case CV_32F:
    {
        float*pc=(float*)complex.data;
        float*pa=(float*)Angle.data;
        for(int i=0;i<rows*cols;i++)
        {
            if(pc[0]==0&&pc[1]>0)
                pa[0]=M_PI/2;
            else if(pc[0]==0&&pc[1]<0)
                pa[0]=-M_PI/2;
            else
                pa[0]=fastAtan2(pc[1],pc[0])*M_PI/180;
            pa+=1;
            pc+=2;
        }
    }
        break;
    case CV_64F:
    {
        double*pc=(double*)complex.data;
        double*pa=(double*)Angle.data;
        for(int i=0;i<rows*cols;i++)
        {
            if(pc[0]==0&&pc[1]>0)
                pa[0]=M_PI/2;
            else if(pc[0]==0&&pc[1]<0)
                pa[0]=-M_PI/2;
            else
                pa[0]=atan2(pc[1],pc[0]);
            pa+=1;
            pc+=2;
        }
    }
        break;
    }
}