opencv有什么快速入门技巧?

发布网友 发布时间:2022-04-23 08:40

我来回答

4个回答

懂视网 时间:2022-04-12 19:25

申明:以下的小技巧,均为 OpenCV2.4.2 下验证过的,但并不保证其它版本依然奏效 (1)利用数组来构建 cv::Mat 示例代码如下所示: void ArrayToMat(){double m[3][3];for (int i=0; i3; i++){for (int j=0; j3; j++){m[i][j] = i+j;coutm[i][j] ;}coutendl;

申明:以下的小技巧,均为OpenCV2.4.2下验证过的,但并不保证其它版本依然奏效

(1)利用数组来构建cv::Mat

示例代码如下所示:

void ArrayToMat()
{
	double m[3][3];
	for (int i=0; i<3; i++)
	{
		for (int j=0; j<3; j++)
		{
			m[i][j] = i+j;
			cout<(i,j);
			cout<

不出意外的话,执行结果应该如下所示:


(2) IplImage*跟cv::Mat之间的互相转换

示例代码:

void IplImageToMat()
{
	IplImage* pImg = cvLoadImage("c:/test.jpg");
	if (!pImg)
	{
		cout<<"pImg load error"<

笔者任意加载了电脑上一副图片,结果如下所示:


提醒,这里的格式转换并不申请新的内存,而仅仅是改变数据结构而已

(3)Mat转换为IplImge

示例代码:

void MatToIplImage()
{
	Mat m = imread("c:/test.jpg");
	if (m.empty())
	{
		cout<<"mat load error"<

笔者任意加载一张图片,上述代码的执行结果为:


(4)访问二维数据(cv::Mat)最高效的方式是先得到该二维数据的每一行的指针,然后利用下标运算符逐列访问

示例代码:

void MatAccess()
{
	double m[3][3];
	for (int i=0; i<3; i++)
	{
		for (int j=0; j<3; j++)
		{
			m[i][j] = i+j;
			cout<(i);
		for (int j=0; j

上面的代码执行结果为:


(5)cv::Mat支持STL中的迭代器功能

示例代码:

void MatAccess()
{
	double m[3][3];
	for (int i=0; i<3; i++)
	{
		for (int j=0; j<3; j++)
		{
			m[i][j] = i+j;
			cout<(i);
		for (int j=0; j it = M.begin();
	MatConstIterator_ itEnd = M.end();
	for (;it!=itEnd; it++)
	{
		sum += *it;
	}
	cout<<"sum: "<

运行结果:


(6) satureat_cast : openCV中用于数据“饱和”判断

示例:

void Saturate_castTest()
{
	int r = 300;
	uchar t = saturate_cast(r);
	cout<

结果:


(7)获取函数执行时间

getTickCount()和getTickFrequency()结合起来可以用来计算函数执行时间,尤其是很小的代码片段的执行时间

举例:

void GetFuncTime()
{
	double exec_time = (double)getTickCount();
	for (int i=0; i<10; i++)
	{
		;
	}
	exec_time = ((double)getTickCount() - exec_time)*1000./getTickFrequency();
	cout<

上面的代码,重点在于for循环,且,该循环中什么也不处理;用一般的时间函数很难计算出该代码片段的执行时间,但利用getTickCount()和getTickFrequency()就很容易。笔者电脑上的结果是:

热心网友 时间:2022-04-12 16:33

opencv可以理解为一个开源的函数库
如果要入门,还要有相关基础,c,c++就不要说了,必需会一些
专业知识也要具备,图像处理,视频编码等,要不都不知道做什么
如果具备上面的条件,入门非常快

热心网友 时间:2022-04-12 17:51

最好买两本书,电子版的也可以,我推荐<Open CV教程》、《学习OpenCV》,这两本书比较经典。最好的学习方法是参照书里的实例,运行---理解----实践。

热心网友 时间:2022-04-12 19:25

带着任务学习

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com