`
rys5851968
  • 浏览: 155752 次
社区版块
存档分类
最新评论

基于Opencv的矩阵三角函数封装 cvAtan2Mat cvSinMat cvAtan2Mat功能等于matlab里的atan2 sin cos

 
阅读更多

Opencv中没有提供对矩阵进行操作的三角函数,我封装了三个,其他三角函数可以仿照此进行封装。

头文件中要包含

#include <cmath>


CvMat* cvAtan2Mat(CvMat *a, CvMat *b)
{
int rows = a->rows;
int cols = a->cols;
CvMat *out = cvCreateMat(rows, cols, a->type);
for(int i=0; i<rows; i++)
{
float* ptra = ( float*)(a->data.ptr+i*a->step);
float* ptrb = ( float*)(b->data.ptr+i*b->step);
float* ptrout = ( float*)(out->data.ptr+i*out->step);
for(int j=0; j<cols; j++)
{
*ptrout = atan2(*ptra,*ptrb);
ptra++;
ptrb++;
ptrout++;
}
}
return out;
}


CvMat* cvSinMat(CvMat *a)
{
int rows = a->rows;
int cols = a->cols;
CvMat *out = cvCreateMat(rows, cols, a->type);
for(int i=0; i<rows; i++)
{
float* ptra = ( float*)(a->data.ptr+i*a->step);
float* ptrout = ( float*)(out->data.ptr+i*out->step);
for(int j=0; j<cols; j++)
{
*ptrout = sin(*ptra);
ptra++;
ptrout++;
}
}
return out;
}


CvMat* cvCosMat(CvMat *a)
{
int rows = a->rows;
int cols = a->cols;
CvMat *out = cvCreateMat(rows, cols, a->type);
for(int i=0; i<rows; i++)
{
float* ptra = ( float*)(a->data.ptr+i*a->step);
float* ptrout = ( float*)(out->data.ptr+i*out->step);
for(int j=0; j<cols; j++)
{
*ptrout = cos(*ptra);
ptra++;
ptrout++;
}
}
return out;
}

分享到:
评论

相关推荐

    OPENCV_Mat类存取方法

    OPENCV_Mat类是OpenCV中最基本的数据结构,它是一个矩阵类,用于存储图像、视频、特征点等数据。Mat类提供了多种方法来存取和操作矩阵数据。 1. 数据元素地址计算公式: addr(M[i0,i1,…,im-1]) = M.data + M.step...

    OpenCv矩阵操作函数源代码.docx

    OpenCV是一个功能强大且广泛应用于计算机视觉和图像处理的开源库,它提供了大量的矩阵操作函数,以便用户更方便地进行图像处理和分析。今天,我们将对OpenCV中的矩阵操作函数进行详细的介绍和分析。 首先,让我们来...

    opencv分封装函数到dll

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

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

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

    OpenCVSharp 中遍历、修改Mat像素

    OpenCVSharp 中遍历、修改Mat像素对比 1、指针 2、GetIndexer 4、GetGenericIndexer 5、GetUnsafeGenericIndexer 6、Mat.At 7、Mat.Get和Mat.Set 8、LUT "OpenCVSharp学习笔记3--OpenCV如何扫描图像、利用查找表和...

    OpenCV中Mat类的数学运算和区域选取

    在OpenCV库中,`Mat`类是核心的数据结构,用于表示二维数组,通常用于处理图像数据。这个类提供了丰富的功能,包括基本的数学运算和区域选取,使得图像处理和计算机视觉任务变得更加便捷。以下是对`Mat`类中数学运算...

    c#通过dll读取opencv里的mat图片

    在IT领域,跨语言通信是常见的需求之一,本例中我们关注的是如何使用C#通过C++编写的DLL(动态链接库)来处理OpenCV中的MAT图像数据,并最终在C#的PictureBox控件中显示出来。这个过程涉及到几个关键的技术点,我们...

    opencv与halcon的Mat与HObject互转的完整测试程序

    OpenCV主要用于图像处理和计算机视觉的算法实现,而Halcon则是机器视觉领域的专业软件,提供了强大的形状匹配、模板匹配和光学字符识别等功能。本文将详细讨论如何在OpenCV的`Mat`对象和Halcon的`HObject`对象之间...

    Opencv的Mat中绘制中文字体功能

    封装在Opencv的Mat图像中绘制中文文字功能!解决Opencv中默认绘制中文字体出现乱码的情况!

    OpenCvSharp实现Mat对象简单的像素操作

    1: 输出一个Mat对象的像素 自定义一个Mat 对象,然后输出像素值(像素值基本都在 0 – 255 之间 ,图像为三通道) 代码 public static void F1() { Scalar s = new Scalar(0, 0, 255); //定义一个三通道颜色...

    Opencv中imwrite函数源代码

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

    OpenCV常用的图像和矩阵操作总结

    OpenCV提供了多种矩阵操作函数,包括矩阵加法、矩阵乘法、矩阵转置和矩阵逆等。这些函数可以对矩阵进行各种操作,以便实现机器学习和计算机视觉算法。 OpenCV提供了大量的图像和矩阵操作函数,学习和掌握这些函数...

    Opencv图像Mat写入中文汉字

    #include &lt;opencv2/imgproc/imgproc.hpp&gt; void addChineseTextToImage(cv::Mat& img, const std::string& text, cv::Point org, cv::Scalar color, int fontFace, double fontScale, int thickness) { cv::...

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

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

    opencv中mat与jpeg相互转换及显示代码

    在OpenCV库中,`Mat`是用于存储图像数据的核心数据结构。它是OpenCV中的一个二维数组类,可以表示各种图像格式,包括灰度、彩色、多通道等。`Mat`对象不仅支持基本的图像处理操作,如滤波、边缘检测、颜色空间转换等...

    基于opencv的图像增强函数(c++)

    基于opencv的图像增强函数,Demo用vc6.0实现。 如果您对安装opencv或在vc6.0下配置opencv有疑问,请访问opencv中文网站: http://www.opencv.org.cn/

    基于opencv轮廓提取函数

    这是一个基于opencv的图像轮廓提取程序,可以识别轮廓边沿,是初级学者的参考代码

    opencv 矩阵

    2. **使用迭代器**:OpenCV的`cv::Mat`类也提供了迭代器接口,可以像操作STL容器一样遍历矩阵元素。 ```cpp for (cv::MatConstIterator_&lt;uchar&gt; it = mat.begin(); it != mat.end(); ++it) { *it = 128; // 将所有...

    基于MATLAB OpenCv的人脸识别系统源码

    基于MATLAB OpenCv的人脸识别系统源码基于MATLAB OpenCv的人脸识别系统源码基于MATLAB OpenCv的人脸识别系统源码基于MATLAB OpenCv的人脸识别系统源码基于MATLAB OpenCv的人脸识别系统源码基于MATLAB OpenCv的人脸...

    基于MATLAB与OpenCV的计算机视觉工具箱接口

    标题"基于MATLAB与OpenCV的计算机视觉工具箱接口"表明,这个项目或教程旨在介绍如何在MATLAB环境中利用OpenCV的功能,构建一个连接两个平台的接口。这样的接口能够使MATLAB用户可以直接调用OpenCV的丰富算法,无需...

Global site tag (gtag.js) - Google Analytics