opencv中的一些简单函数和注意事项218/12/18-

①输出当前opencv版本

printf("\n\n\t\t\t   当前使用的OpenCV版本为:" CV_VERSION );
//CV_VERSION 为当前版本宏

②waitkey()函数

waitKey( 0 );//显示窗口直到按下任意键;

③getTickCount()

计算运行时间并输出
实例

	//【1】记录起始时间
	double time0 = static_cast<double>(getTickCount());  
            //getTickCount记录CPU自某个事件以来走过的周期数;
	//【2】执行代码
	。。。。。

	//【3】计算运行时间并输出
	time0 = ((double)getTickCount() - time0)/getTickFrequency();
	        //getTickFrequency返回CPU一秒钟走过的周期数;
	cout<<"此方法运行时间为: "<<time0<<"秒"<<endl;  //输出运行时间

(1)eye()函数

实例

Mat I = Mat::eye(4, 4, CV_64F);
//#define CV_64F  6
I.at<double>(1,1) = CV_PI; 
//#define CV_PI   3.1415926535897932384626433832795
cout << "\nI = " << I << ";\n" << endl;

output

I = [1, 0, 0, 0;
  0, 3.141592653589793, 0, 0;
  0, 0, 1, 0;
  0, 0, 0, 1];

(2)Mat构造函数

实例1

    Mat r = Mat(2, 3, CV_8UC3);
	randu(r, Scalar::all(0), Scalar::all(255));

	//此段代码的OpenCV2版为:
	//cout << "r (OpenCV默认风格) = " << r << ";" << endl << endl;
	//cout << "r (Python风格) = " << format(r,"python") << ";" << endl << endl;
	//cout << "r (Numpy风格) = " << format(r,"numpy") << ";" << endl << endl;
	//cout << "r (逗号分隔风格) = " << format(r,"csv") << ";" << endl<< endl;
	//cout << "r (C语言风格) = " << format(r,"C") << ";" << endl << endl;
	//此段代码的OpenCV3版为:
	cout << "r (OpenCV默认风格) = " << r << ";" << endl << endl;
	cout << "r (Python风格) = " << format(r, "python") << ";" << endl << endl;
	cout << "r (Numpy风格) = " <<  format(r, "numpy" )<< ";" << endl << endl;
	cout << "r (逗号分隔风格) = " << format(r,"csv")<< ";" << endl<< endl;
	cout << "r (C语言风格) = " <<  format(r, "C" ) << ";" << endl << endl;

output在这里插入图片描述
实例2

// 创建空白的Mat图像
#define WINDOW_WIDTH 600     //定义窗口大小的宏
Mat atomImage = Mat::zeros( WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3 );
Mat rookImage = Mat::zeros( WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3 );

(3)Point类

实例

    Point2f p(6, 2);
	cout << "【2维点】p = " << p << ";\n" << endl;

	Point3f p3f(8, 2, 0);
	cout << "【3维点】p3f = " << p3f << ";\n" << endl;

output
在这里插入图片描述

(4)vector类

	vector<float> v;
	v.push_back(3);
	v.push_back(5);
	v.push_back(7);

	cout << "【基于Mat的vector】shortvec = " << Mat(v) << ";\n"<<endl;

	vector<Point2f> points(8);
	for (size_t i = 0; i < points.size(); ++i)
		points[i] = Point2f((float)(i * 5), (float)(i % 7));

	cout << "【二维点向量】points = " << points<<";";
	getchar();//按任意键退出

output
在这里插入图片描述

MoveWindow()函数

函数功能:该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。
  函数原型:BOOL MoveWindow(HWND hWnd,int x.int y,int nWidth,int nHeight,BOOL bRePaint);

参数:
  hWnd:窗口句柄。
  x:指定窗口的新位置的左边界。
  Y:指定窗口的新位置的顶部边界。
  nWidth:指定窗口的新的宽度。
  nHaight:指定窗口的新的高度。
  bRepaint:确定窗口是否被刷新。如果该参数为TRUE,窗口接收一个WM_PAINT消息;如果参数为FALSE,不发生任何刷新动作。它适用于客户区,非客户区(包括标题栏和滚动条),及由于移动子窗口而露出的父窗口的区域。如果参数为FALSE,应用程序就必须明确地使窗口无效或重画该窗口和需要刷新的父窗口。bRepaint是设置是否重画窗口和父窗口。当设置为TRUE时,就进行重画。当设置为FALSE时,就不进行重画,需要手功进行更新指定的区域。
  返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

猜你喜欢

转载自blog.csdn.net/weixin_44052726/article/details/85111339
今日推荐