鸟瞰图变换实例
本文为《学习opencv(中文版)》第十二章第一个例子:鸟瞰图,原书上的第445页的代码是可以运行的,只是书中没有把输入的参数写清楚,需要自己动手。
1. mian()的参数,argc和argv说明
2. 本例中argv【1】~argv【5】的具体值
3. 代码展示
1. main()的参数,argc和argv的说明
argc和argv这两个参数一般在用命令行编译程序时有用,int类型的argc,用来统计程序运行时发送给main函数的命令行参数的个数,char *类型的argv[],为字符串数组,用来存放指向的字符串擦数的指针数组,每个元素指向一个参数。各成员含义:
- argv[0]指向成员运行的全路径名,
- argv[1 ]指向在dos命令行中执行程序名后的第一个字符串,
- argv[2 ]指向执行程序名后的第二个字符串,
- argv[3 ]指向执行程序名后的第三个字符串
- ……
在vs中argv的值对应于【项目】->【属性】->【配置属性】->【调试】->【命令参数】中的值。如果有多个字符串,则用空格隔开,argv[0]不需要输入,命令参数中的值从argv[1 ]开始。—— 《opencv3编程入门》(毛星云,冷雪飞等著)。
2.本例中argv【1】~argv【5】的具体值
argv[1 ]=12 //棋盘内点长
argv[2 ]=12 //棋盘内点宽
argv[3 ]=Intrinsics.xml //摄像机的内参数矩阵
argv[4 ]=Distortion.xml //摄像机的畸变系数
argv[5 ]=0.jpg //图片名
参数三和参数四是两个文件,文件由《学习opencv》第十一章的一次完成标定程序生成的,
3. 代码展示
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
void help(){
printf("Birds eye view\n\n"
" birdseye board_w board_h intrinsics_mat.xml distortion_mat.xml checker_image \n\n"
"Where: board_{w,h} are the # of internal corners in the checkerboard\n"
" intrinsic intrinsic path/name of matrix from prior calibration\n"
" distortion distortion path/name of matrix from pror calibration\n"
" checker_image is the path/name of image of checkerboard on the plane \n"
" Frontal view of this will be shown.\n\n"
"