Opencv学习笔记-05

argc,argv参数

main(int argc,char** argv):

  • int argc 表示命令行字串的个数
  • char ** argv[]表示命令行参数的字符串
    这两个形参是存在于Linux和OS上的写法,是命令行编译程序时使用的。如果遇到报错,可以【项目属性】-> 【配置属性】-> 【调试】-> 【命令参数】->中指定参数的值。

格式化输出:printf()函数

遍历矩阵时使用
发现利用cout<<"";不能打印uchar类型,打印出来会乱码,但是利用printf("%u",I.at<uchar>(i,j))可以打印出来uchar类型的变量。
printf(“Opencv版本%s”,CV_VERSION);

HighGUI界面

imwrite()函数

bool imwriter(filename, img, const vector<Int> & params =vector<int>());

参数:const vector<Int> & params =vector<int>()表示

  • 对于jpeg,0-100表示图片质量,默认是95
  • 对于png,0-9表示压缩基表,较高的值意味着更小的尺寸和更长的压缩时间,默认是3
  • 对于PPM,PGM,或者PBM格式的图片,表示一个二进制格式标志,取值为0或者1,默认是1

定义ROI的方法

  1. 方法一
    imageROI = image(Range(350,350+logo.rows),Range(800,800+logo.cols));

  2. 方法二
    imageROI = image(Rect(800,350,logo.cols,logo.rows));

图像叠加

addWeighted(imgeROI, 0.5, logo, 0.3, 0. ,image_dst)

滑动条的使用

createTrackbar(conststring& trackbarname, conststring& winname, int* value,int count, TrackbarCallback onChange = 0, void* userdata = 0);

  • trackbarname 滑动条名字;
  • winname 窗口的名字;
  • int*类型的value,一个指向整形的指针,表示滑块的位置。在创建时,滑块的初始位置就是该变量当前的值
  • int 类型的count,表示滑块可以达到的最大值,滑块最小位置的值始终是0;
  • TrackbarCallback类型的onChange,它有默认值0,。这是一个指向回调函数的原型必须为void XXX(int,void*);其中第一个参数是轨迹条的位置,第二个参数是用户数据(看下面第六个参数)。如果回调函数是NULL指针,则表示没有回调函数的调用。
  • void*类型的userdata,也有默认值0,用来处理轨迹条事件。

sprintf函数(就是用来拼接字符串的)

可以理解为拼接字符串
int sprintf( char *buffer, const char *format, [ argument] … );
buffer:char型指针,指向将要写入的字符串的缓冲区, 必须指明该字符串大小 。
format:格式化字符串。
[argument]… .:可选参数,可以是任何类型的数据。
返回值:字符串长度( strlen)

sprintf(name, "%s%s", firstName, lastName);

getTrackbarPos()函数

int getTrackbarPos(conststring& trackbarname,conststring& winname);
获取当前的位置并且返回

  • 第一个参数trackbarname,表示轨迹条的名字;
  • 第二个参数winname,表示轨迹条的父窗口名字;

core组件

Mat相关

Mat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵的指针。
Mat B(A)拷贝构造函数,C=A赋值符,只复制矩阵信息头和矩阵指针,不复制矩阵;
ROI

  • Mat D(A,Rect(10,10,100,100));//使用矩形界定;
  • Mat E = A(Range:all(),Range(1,3));//用行和列来界定
    复制矩阵本身:
    Mat F = A.clone();
    Mat G; A.copyTo(G);

构造函数
Mat M(2,2,CV_8UC3,Scalar(0,0,255));
Mat M; M.create(4,4,CV_8UC(2));
Mat::eye(4,4,CV_64F); Mat E = Mat::ones(4,4,CV_32F);
Mat C = (Mat_<double>(3,3)<<0,1,3,4,1,54,3,5,2);
Mat D = C.row(1).clone();

矩阵输出

  • 默认风格:
    cout<<“r”<<r<<";"<<endl<<endl;
    cout<<“r”<<format(r,1)<<endl;
  • 逗号分隔符
    cout<<“r”<<format(r,2)<<endl;
  • python风格
    cout<<“r”<<format(r,3)<<endl;
  • Numpy风格
    cout<<“r”<<format(r,4)<<endl;
  • C语言风格
    cout<<“r”<<format(r,5)<<endl;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值