,,C语言 OpenCV实现柱面投影

,,C语言 OpenCV实现柱面投影

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要进行柱面投影,否则离中心图像距离越远的图像拼接后变形越大。本文将具体介绍一下这如何实现,需要的可以参考一下

目录

前言实现代码针对彩色图像针对灰度图像

前言

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要进行柱面投影,否则离中心图像距离越远的图像拼接后变形越大。

柱面投影公式为

实现代码

针对彩色图像

int main()

{

cv:mat image 1=cv:im read(' images/1。jpg ',1);

如果(!图片1 .日期)

返回0;

imshow('第一帧,第一帧);

imgOut=Mat(第一帧,第一帧,第一帧,第8帧,第3帧):

浮点w=第一帧。关口

浮点h=影格1 .行

浮点f=(w/2)/atan(pi/8);

for(int I=0);我第一行;(一)

{

for(int j=0);j图片1 .科尔(j)

{

浮点x=j;

浮点y=I;

浮点x1=f * atan((x-w/2)/f)f * atan(w/(2.0f * f));

浮点1=f *(y-h/2.0f)/sqrt(x-w/2.0f)*(x-w/2.0f * f)h/2.0f;

int col=(int)(x1 0.5f)://加0.5版是为了四舍五入

int row=(int)(y 1 0.5 f);//加0.5版是为了四舍五入

如果(列图像1。列行图像1。行)

{

imgOut.atVec3b(row,col)[0]=第一帧。atVec3b(i,j)[0];

imgOut.atVec3b(row,col)[1]=第一帧。atVec3b(i,j)[1];

imgOut.atVec3b(row,col)[2]=第一帧。atVec3b(i,j)[2];

}

}

}

im show(' im out ',im out);

等待键(0);

返回0;

}

实现效果

针对灰度图像

cv:mat image 1=cv:im read(' e:\ \ zcb _ work \ \ 2113 \ \ pic 2 \ \ k . jpg ',0);

如果(!图片1 .日期)

返回0;

imshow('第一帧,第一帧);

cv:mat image 2=cv:im read(' e:\ \ zcb _ work \ \ 2113 \ \ pic 2 \ \ j . jpg ',0);

如果(!图片2 .日期)

返回0;

imshow('第2帧,第2帧);

imgOut1=Mat(第一帧,第一帧,第一帧,第8帧,第一帧):

img输出1。sepo(0);

imgOut2=Mat(第2帧。行数、第2帧。cols、CV_8UC1):

img out 2。sepo(0);

浮点w=第一帧。关口

浮点h=影格1 .行

浮点f=(w/2)/atan(pi/8);

for(int I=0);我第一行;(一)

{

for(int j=0);j图片1 .科尔(j)

{

浮点x=j;

浮点y=I;

浮点x1=f * atan((x-w/2)/f)f * atan(w/(2.0f * f));

浮点1=f *(y-h/2.0f)/sqrt(x-w/2.0f)*(x-w/2.0f * f)h/2.0f;

int col=(int)(x1 0.5f)://加0.5版是为了四舍五入

int row=(int)(y 1 0.5 f);//加0.5版是为了四舍五入

如果(列图像1。列行图像1。行)

{

imgOut1.atuchar(row,col)=image1.atuchar(i,j);

imgOut2.atuchar(row,col)=image2.atuchar(i,j);

//imgOut.atVec3b(row,col)[1]=image1.atVec3b(i,j)[1];

//imgOut.atVec3b(row,col)[2]=image1.atVec3b(i,j)[2];

}

}

}

imshow('imgOut1 ',img out 1);

imshow('imgOut2 ',img out 2);

实现效果

原图

柱面投影

用冲浪吗算法,特征检测,

合成这样,呵呵呵,

以上就是c。非政府组织语言OpenCV(开放简历)实现柱面投影的详细内容,更多关于c。非政府组织语言OpenCV(开放简历)柱面投影的资料请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • python opencv角点检测,opencv检测一定角度的直线
  • 留言与评论(共有 条评论)
       
    验证码: