开发者社区> 禾路> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

opencv提供的带参数例程

简介: body { font-family: @微软雅黑; font-size: 8pt; line-height: 1.5 } html,body { color: inherit; background-color: inherit } h1 { font-size: 1.
+关注继续查看
     如果仅仅是简单的拼接,可以采用stitching.cpp就差不多了;但是如果采用stitching_detailed.cpp的话,首先要解决的就是"编译问题",而后解决的是分析不同参数下的拼接结果和匹配效果;最后是能够理解一些原理。
     OK,历经一些调试,编译成功,首先看一下有哪些参数可以调整。其实光靠这个就可以写一个简单的带调整的界面了。


F:\06.项目项目\opencv拼接\imageStitching\imageStitching>imageStitching.exe
Rotation model images stitcher.

stitching_detailed img1 img2 [...imgN] [flags]

Flags:
  --preview
      Run stitching in the preview mode. Works faster than usual mode,
      but output image will have lower resolution.
  --try_gpu (yes|no)
      Try to use GPU. The default value is 'no'. All default values
      are for CPU mode.

Motion Estimation Flags:

  --work_megapix <float>
      Resolution for image registration step. The default is 0.6 Mpx.
  --features (surf|orb)
      Type of features used for images matching. The default is surf.
  --match_conf <float>
      Confidence for feature matching step. The default is 0.65 for surf and 0.3 for orb.  这个我可能会单独配置
  --conf_thresh <float>
      Threshold for two images are from the same panorama confidence.
      The default is 1.0.
  --ba (reproj|ray)
      Bundle adjustment cost function. The default is ray.
  --ba_refine_mask (mask)
      Set refinement mask for bundle adjustment. It looks like 'x_xxx',
      where 'x' means refine respective parameter and '_' means don't
      refine one, and has the following format:
      <fx><skew><ppx><aspect><ppy>. The default mask is 'xxxxx'. If bundle
      adjustment doesn't support estimation of selected parameter then
      the respective flag is ignored.
  --wave_correct (no|horiz|vert)
      Perform wave effect correction. The default is 'horiz'.
  --save_graph <file_name>
      Save matches graph represented in DOT language to <file_name> file.
      Labels description: Nm is number of matches, Ni is number of inliers,
      C is confidence.

Compositing Flags:
  --warp (plane|cylindrical|spherical|fisheye|stereographic|compressedPlaneA2B1|
compressedPlaneA1.5B1|compressedPlanePortraitA2B1|compressedPlanePortraitA1.5B1|
paniniA2B1|paniniA1.5B1|paniniPortraitA2B1|paniniPortraitA1.5B1|mercator|transve
rseMercator)
      Warp surface type. The default is 'spherical'.
  --seam_megapix <float>
      Resolution for seam estimation step. The default is 0.1 Mpx.
  --seam (no|voronoi|gc_color|gc_colorgrad)
      Seam estimation method. The default is 'gc_color'.
  --compose_megapix <float>
      Resolution for compositing step. Use -1 for original resolution.
      The default is -1.
  --expos_comp (no|gain|gain_blocks)
      Exposure compensation method. The default is 'gain_blocks'.
  --blend (no|feather|multiband)
      Blending method. The default is 'multiband'.
  --blend_strength <float>
      Blending strength from [0,100] range. The default is 5.
  --output <result_img>
      The default is 'result.jpg'.

测试图片:
第一组:
img_5e3dedbead47d63b657fa37277ea7ddc.jpeimg_37837edd9361b5ba2b9947a1fc66fd1a.jpeimg_b6ff96c4dfc9a3d1e525af47b77c386b.jpe

--全部默认参数,80秒,结果
img_4b83f35854324e98317fb2639779020d.jpe
--preview 约80秒,这个图片拼接的不错,但是时间太长了。
img_4b83f35854324e98317fb2639779020d.jpe
 --work_megapix <float>是用于寻找的,改为0.1后时间为30秒
img_4b83f35854324e98317fb2639779020d.jpe
      --features (surf|orb) 改成orb后速度显著提升
 --match_conf <float>也应该是数值越小匹配越快,但是失败的可能也越大。这个是不断调整参数的过程。

  --ba (reproj|ray)默认是ray,改为reproj后,速度更快!更快


然后,就是 --warp 这一块,参数比较多
plane
cylindrical
fisheye
sphericalimg_4b83f35854324e98317fb2639779020d.jpe




目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
csharp通过dll调用opencv函数,图片作为参数
[blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找到了比较好的资料。
747 0
opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数                   前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”。而在实际的代码编写过程中,很多时候想把已经写好的matlab函数融合进去,但是依然是将图片作为参数传递比较成为问题。
877 0
C++语言基础 例程 有默认参数的函数
贺老师的教学链接 形参/实参、声明/调用/定义 #include <iostream> using namespace std; int max(int a, int b, int c=0);//仅声明时设默认 int main( ) { int a,b,c; cin>>a>>b>>c; cout&l
579 0
C#调用c++的动态库dll演示例程
<h1>1.首先编写c++动态库</h1> <p></p> <pre name="code" class="cpp">extern "C" __declspec(dllexport) int __stdcall add(int x, int y) { return x + y; }</pre> <p><img src="http://img.blog.csdn.net/201505
2781 0
C++语言基础 例程 标准输出流
贺老师的教学链接  本课讲解 cerr流对象使用:解方程ax^2+bx+c=0 //解一元二次方程ax^2+bx+c=0:从键盘输入a,b,c的值,求x1和x2。如果a=0或b2-4ac<0,输出出错信息。 #include<iostream> #include <cmath> #include<iomanip> using namespace st
658 0
C++语言基础 例程 标准输入流
贺老师的教学链接  本课讲解 例: 输入个数不确定的成绩 #include &lt;iostream&gt; using namespace std; int main( ) { float grade; cout&lt;&lt;"enter grade:"; while(cin&gt;&gt;grade)//能从cin流读取数据 { if(g
772 0
C++语言基础 例程 重载双目运算符
贺老师的教学链接  本课讲解 String类运算符重载函数 #include<iostream> #include<cstring> using namespace std; class String { public: String( ){p=NULL;} String(char *str); friend bool operator&g
768 0
C++语言基础 例程 函数中的引用
贺老师的教学链接  本课讲解 引用作为形参 #include&lt;iostream&gt; using namespace std; class Sample { int x; public: Sample(int a): x(a) {cout&lt;&lt;"A";} Sample(Sample &amp;a): x(a.x) {cout&lt;&lt;"B"
463 0
C#调用C函数(DLL)传递参数问题
备忘: 1.C函数参数为字符串char*。如果是入参,对应C#中string或StringBuilder;如果是出参对应C#中StringBuider;   2.C函数参数为结构体指针,需在C#中对应定义结构体。
644 0
+关注
禾路
图像处理工程师,专注图像处理多年,长期奋斗在图像增强、识别一线。实战经验丰富,研究开发的连铸体拼接算法、人脸美化算法、红外线血管增强识别系统、中药识别系统、石材大板识别系统等均已投入使用。对opencv有着深入理解和解析,以jsxyhelu账号参与OpenCV项目。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载