`

Opencv 向量的一阶差分函数封装实现 功能等价于Matlab的diff函数 附:显示CvMat的函数封装

 
阅读更多

最初用opencv的cvNorm函数,发现结果错的一塌糊涂! 多方查找没有cvNorm太多的介绍,后来仔细查阅,从cvNorm等价于Matlab的norm函数出发寻找线索,而显然matlab里norm函数不同与diff函数,无奈自己封装吧。

CvMat* DiffMat(CvMat *B) //求向量B的一阶差分 功能等价matlab里的diff
{
int cols = B->cols;
CvMat*Out = cvCreateMat(1, cols-1, B->type);
const float*pB = (const float*)(B->data.ptr);
float*pOut = ( float*)(Out->data.ptr);
for(int i=0; i<cols; i++)
{
*pOut = *(pB+1)-*pB;
pB++;
pOut++;


}
return Out;
}

注意:1,输入B是个向量,且为行向量

2,返回的是一个CvMat

3,数据类型默认的是float,在申请指针时用到了。

调用示例如下:

CvMat *diffMat = cvCreateMat(1,InMat->cols-1, InMat->type);

diffMat = DiffMat(InMat);

另附,打印一个CvMat数据的函数封装,调用该函数可以方便查看矩阵中的元素。

void PrintMat(CvMat* A)
{
int i,j;
//printf("/nMatrix = :");
for(i=0;i<A->rows;i++) //行
{
printf("/n");


switch( CV_MAT_DEPTH(A->type) )
{
case CV_32F:
case CV_64F:
for(j=0;j<A->cols;j++) //列
//获取2维数组的元素
printf("%9.3f ", (float) cvGetReal2D( A, i, j ));
break;
case CV_8U:
case CV_16U:
for(j=0;j<A->cols;j++)
printf("%6d",(int)cvGetReal2D( A, i, j ));
break;
default:
break;
}
}
printf("/n");
}



分享到:
评论

相关推荐

    OpenCv背景差分

    OpenCv 背景差分--将背景差分成功封装成一个函数,借助高斯平滑等去噪

    cvlib_mex:供matlab调用封装openCV函数(windows 64位matlab)

    《cvlib_mex:在Windows 64位MATLAB中封装OpenCV函数的实践》 在计算机视觉领域,OpenCV(开源计算机视觉库)是不可或缺的工具,它提供了大量的图像处理和计算机视觉算法。然而,虽然OpenCV主要用C++编写,但有时...

    Matlab程序转Opencv不可不知的17个函数

    14. 向量范数计算:Matlab 中的 norm(A) 函数相当于 Opencv 中的 cvNorm 函数,可以用来实现向量的范数计算。 15. 矩阵奇异值分解:Matlab 中的 svd(A, 0) 函数相当于 Opencv 中的 cvSVD 函数,可以用来实现矩阵的...

    opencv分封装函数到dll

    解决办法:在配置了opencv的电脑上(但是在环境变量中没有添加dll的路径),将调用相关函数的代码封装成函数,生成dll文件,拷贝到其他没配置opencv的电脑上,再解析该dll,将该dll中调用的一些opencv的函数涉及到的...

    基于OpenCV实现的帧间差分

    OpenCV(Open Source Computer Vision Library)是一个强大的开源库,提供了丰富的功能来支持包括帧间差分在内的图像处理和计算机视觉任务。 基于OpenCV实现帧间差分的基本步骤如下: 1. **读取图像**:首先,我们...

    opencv实现边缘检测

    opencv实现对任意图片的边缘检测并绘制出边缘图像

    OPENCV函数学习手册.pdf

    比如,Sobel函数可以用来计算图像的一阶、二阶或混合图像差分。它是一个典型的图像平滑和微分操作结合的例子,通常用于边缘检测。Sobel算子通过使用可分离的内核来计算差分,其核的大小由参数aperture_size指定,...

    matlab开发-OpenCVMatlab

    在本文中,我们将深入探讨如何使用MATLAB与OpenCV之间的接口——OpenCVMatlab,以便在MATLAB环境中实现高效且强大的计算机视觉功能。OpenCV(开源计算机视觉库)是一个强大的C++模板库,用于图像处理和计算机视觉,...

    基于opencv的图像旋转,功能类似matlab的imrotate函数

    本篇将深入探讨如何利用OpenCV实现图像的旋转,以及这一功能与MATLAB中的`imrotate`函数的相似性。 在OpenCV中,图像旋转主要通过`getRotationMatrix2D`和`warpAffine`或`warpPerspective`这两个函数来完成。`...

    opencv的cvMat用法小结

    OpenCV 中 CvMat 的用法小结 OpenCV 是一个计算机视觉库,它提供了许多实用的函数和数据结构来处理图像和视频。其中,CvMat 是 OpenCV 中的一个基本数据结构,用于存储矩阵数据。在本文中,我们将详细介绍 CvMat 的...

    OPENCV函数手册(中文).zip

    OpenCV(开源计算机视觉库)是一个强大的跨平台计算机视觉库,它包含了大量的图像处理和计算机视觉功能,广泛应用于机器学习、图像识别、自动驾驶等领域。这个压缩包“OPENCV函数手册(中文).zip”显然是为中文用户...

    OPENCV函数手册_opencv_opencv函数手册_

    这个“OPENCV函数手册”是为开发者提供的一份详细参考资料,旨在帮助他们理解和使用OpenCV中的各种功能。 一、OpenCV概述 OpenCV是由Intel公司发起并维护的开源项目,它提供了丰富的API,支持C++、Python、Java等...

    Opencv中imwrite函数源代码

    OpenCV中imwrite函数源代码详解 OpenCV是一个功能强大且广泛应用的计算机视觉库,它提供了许多有用的函数来处理图像和视频。imwrite函数是OpenCV中一个重要的函数,用于将图像写入到文件中。在本文中,我们将详细地...

    opencv各函数功能

    OpenCV 函数功能大全 OpenCV 是一个基于开源的跨平台计算机视觉库,它提供了丰富的函数功能,涵盖了图像处理、视频处理、特征检测、对象识别等领域。以下是 OpenCV 中的主要函数功能: 图像处理 1. cvLoadImage:...

    OpenCV_shouce.rar_opencv_opencv使用手册_opencv函数shouce_opencv函数手册_vi

    OpenCV(开源计算机视觉库)是一个强大的跨平台计算机视觉库,它包含了大量的图像处理和计算机视觉功能,广泛应用于图像分析、机器学习、实时图像处理等领域。这个名为"OpenCV_shouce.rar"的压缩包文件提供了关于...

    已编译好的opencv库,适用于matlab

    在MATLAB中使用OpenCV,通常是通过MEX接口实现的,MEX文件是MATLAB的编译型代码接口,允许MATLAB调用C、C++或Fortran编写的代码,这样可以提高计算效率。mexopencv就是这样一个项目,它提供了一系列预编译的MEX函数...

    在openCv下画出正弦函数图像

    在openCv下画出正弦函数图像 很简单的入门级opencv学习

    background-difference-method.rar (openCV+背景差分法)

    在本文中,我们将深入探讨OpenCV库如何通过背景差分算法实现对运动目标的精确识别。 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉功能。在运动目标...

    OpenCV 差分求轮廓源代码

    本文将深入探讨“OpenCV 差分求轮廓”的概念、实现原理以及源代码解析。 差分是图像处理中的一种基本操作,常用于检测图像中的边缘和变化。它通过比较图像像素之间的差异来识别亮度或颜色的突变,这些突变通常对应...

    Matlab函数对应的opencv代码实现.zip

    这个代码就是基于opencv实现Matlab函数的 cv::Mat imhmax(cv::Mat im, double thresh); cv::Mat imhmin(cv::Mat im, double thresh); cv::Mat imreconstruct(cv::Mat marker, cv::Mat mask); cv::Mat ...

Global site tag (gtag.js) - Google Analytics