Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 从二维坐标到柱坐标的图像变换_Image Processing_Opencv_Projection Matrix - Fatal编程技术网

Image processing 从二维坐标到柱坐标的图像变换

Image processing 从二维坐标到柱坐标的图像变换,image-processing,opencv,projection-matrix,Image Processing,Opencv,Projection Matrix,我想将Jpeg图像(其坐标(x,y))转换为柱坐标 opencv中是否有一个函数可以直接执行此操作?或者我可以使用opencv中的哪些函数来创建自己的 我混淆了二维坐标、三维坐标和柱坐标。。有人能简单地讨论一下吗 是否有数学算法可用于将2d转换为3d?二维到柱坐标?三维到柱坐标 我读了上一篇关于这个话题的帖子,但不理解 我没有上过图像处理的课程,但我正赶着看书。。 我通过经验和学习其他程序员的代码来学习。。因此,源代码将非常受欢迎 感谢大家,并为我的初级帖子感到抱歉,在2D领域,你有极坐标。Op

我想将Jpeg图像(其坐标(x,y))转换为柱坐标

opencv中是否有一个函数可以直接执行此操作?或者我可以使用opencv中的哪些函数来创建自己的

我混淆了二维坐标、三维坐标和柱坐标。。有人能简单地讨论一下吗

是否有数学算法可用于将2d转换为3d?二维到柱坐标?三维到柱坐标

我读了上一篇关于这个话题的帖子,但不理解

我没有上过图像处理的课程,但我正赶着看书。。 我通过经验和学习其他程序员的代码来学习。。因此,源代码将非常受欢迎


感谢大家,并为我的初级帖子感到抱歉,

在2D领域,你有极坐标。OpenCV有两个很好的函数用于在笛卡尔坐标系和极坐标系之间进行转换。似乎没有使用这些函数的好例子,因此我使用
cartToPolar
函数为您制作了一个:

#include <opencv2/core/core.hpp>
#include <iostream>

#include <vector>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    vector<double> vX;
    vector<double> vY;

    for(int y = 0; y < 3; y++)
    {
        for(int x = 0; x < 3; x++)
        {
            vY.push_back(y);
            vX.push_back(x);
        }
    }

    vector<double> mag;
    vector<double> angle;

    cartToPolar(vX, vY, mag, angle, true);

    for(size_t i = 0; i < mag.size(); i++)
    {
        cout << "Cartesian (" << vX[i] << ", " << vY[i] << ") " << "<-> Polar (" << mag[i] << ", " << angle[i] << ")" << endl;
    }

    return 0;
}
如果您对图像拼接感兴趣,请查看OpenCV提供的和示例

编辑:
您可以在以下网站上找到这些资源:






我想将jpeg图像的二维坐标转换为柱坐标。。稍后我将使用转换后的坐标转换为图像拼接功能..是的,你是对的,我对图像拼接感兴趣。。我能够成功地运行您的第一个程序,但在第二行源代码中遇到问题>>magAngleZ.push_back(像素);谢谢你的帮助。。谢谢。我还有一个问题。。图像的像素值位于每个(x,y)坐标中。我的问题是,如果我将(x,y)坐标转换为柱坐标,位于该坐标上的像素值会改变吗??希望你明白我的问题。。请纠正我的误解。@NicoleMontecalvo如果您在使用
Mat::push_back()
函数时遇到问题,您可能正在运行较旧版本的OpenCV。您使用的是什么版本?我在代码块10.05中运行opencv 2.3.0,MinGw Gnu Gcc编译器。。我读了很多文章。。我需要校准我的相机吗?我将使用卡西欧exilim ex-z77,但我看到的示例似乎是使用网络摄像机。。有什么方法可以校准我的相机吗。如果我错了,请纠正我。。这可能与我最初问的不同。。问候并感谢你。
Mat_<Vec3f> magAngleZ;

for(int y = 0; y < 3; y++)
{
    for(int x = 0; x < 3; x++)
    {
        Vec3f pixel;
        pixel[0] = cv::sqrt((double)x*x + (double)y*y); // magnitude
        pixel[1] = cv::fastAtan2(y, x);                 // angle
        pixel[2] = x + y;                               // z
        magAngleZ.push_back(pixel);
    }
}

for(int i = 0; i < magAngleZ.rows; i++)
{
    Vec3f pixel = magAngleZ.at<Vec3f>(i, 0);
    cout << "Cylindrical (" << pixel[0] << ", " << pixel[1] << ", " << pixel[2] << ")" << endl;
}