OpenCV(三):Mat类数据的读取

这篇具有很好参考价值的文章主要介绍了OpenCV(三):Mat类数据的读取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.Mat类矩阵的常用属性

2.Mat元素的读取

1.at方法读取Mat矩阵元素 at (int row,int col)

2.矩阵元素地址定位方式访问元素

3.Android jni demo


1.Mat类矩阵的常用属性

下面是一些Mat类的常用属性:

  1. rows: 返回Mat对象的行数。

  2. cols: 返回Mat对象的列数。

  3. dims: 返回Mat对象的维度数,通常为2(表示二维矩阵)。

  4. size(): 返回Mat对象的尺寸(行数和列数)。

  5. empty(): 返回一个布尔值,判断Mat对象是否为空(即未分配内存)。

  6. total(): 返回Mat对象的总元素数。

  7. type(): 返回Mat对象的数据类型,例如CV_8UC1表示8位无符号单通道图像。

  8. channels(): 返回Mat对象的通道数。

  9. depth(): 返回Mat对象中每个像素元素的深度。

  10. elemSize(): 返回Mat对象中每个像素元素的大小(以字节为单位)。

  11. elemSize1(): 返回Mat对象中每个像素元素的大小(以字节为单位),不考虑通道数。

  12. isContinuous(): 返回一个布尔值,指示Mat对象的数据是否连续存储。

  13. total(): 返回Mat对象的总元素数量。

  14. step: 返回Mat对象中每行像素数据的字节步长。

2.Mat元素的读取

1.at方法读取Mat矩阵元素 at (int row,int col)

单通道:

 int value = (int)a.at<uchar>(0, 0);

多通道:

cv::Vec3b vc3 = b.at<cv::Vec3b>(0, 0)

int first = (int)vc3.val[0];

2.矩阵元素地址定位方式访问元素

单通道

(int)(*(b.data + b.step[0] * row + b.step[1]* col + channel));

比较直观

不用考虑数据类型

3.Android jni demo

#include <jni.h>
#include <string>
#include <android/bitmap.h>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <android/log.h>

#define LOG_TAG "xxx"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)

using namespace cv;
using namespace std;
 extern "C"
    JNIEXPORT void JNICALL
    Java_com_example_myapplication_MainActivity_test(JNIEnv *env, jclass clazz) {
        Mat c0(5,5,CV_8UC1,Scalar(4,5,6));
        Mat c1(5,5,CV_8UC2,Scalar(4,5,6));
        Mat c2(5,5,CV_8UC3,Scalar(4,5,6));
        Mat d = (Mat_<int>(1, 5) << 1, 2, 3, 4, 5);
        ostringstream ss;
        ss<<"Mat d的【0,0】="<<d.at<int>(0,0)<<endl;
        Vec2b vc=c1.at<Vec2b>(0,1);
        ss<<"vc.val[0]="<<(int)vc.val[0]<<" vc.val[1]="<<(int)vc.val[1]<<endl;
        ss<<(int)(*(c2.data + c2.step[0] * 2 + c2.step[1]* 2 + 3))<<endl;
        LOGD("%s",ss.str().c_str());
    }

运行结果:

OpenCV(三):Mat类数据的读取,Android之OpenCV,opencv,Android文章来源地址https://www.toymoban.com/news/detail-687917.html

到了这里,关于OpenCV(三):Mat类数据的读取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【opencv之cv::Mat数据深拷贝和浅拷贝探讨】

    很多时候写程序除了一个强大的架构,细节也很重要,俗话说的话细节决定成败嘛,在使用cv::Mat做图片处理的时候发现,这个数据类型存在深拷贝和浅拷贝的情况,遂想一探究竟。 假设这里原图数据为matSrc : copy方法 结果 matA = matSrc 浅拷贝 matB(matSrc ) 浅拷贝 matC = matSrc .cl

    2024年02月13日
    浏览(36)
  • OpenCV中Mat、Ipllmage以及Halcon中Hobject数据类型之间转换

    OpenCV中Mat、CVMat、Ipllmage类型都可以代表和显示图像。IplImage是由CVMat派生,而CvMat由CvArr派生即CvArr - CvMat - IplImage,Mat类型则是C++版本的矩阵类型(CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理)。 Mat类型侧重于计算,数学性较高; 而CvMat和IplImage类型

    2024年02月10日
    浏览(34)
  • 【c++ Opencv】Opencv中Mat的一些相关操作

    C++中的Mat类是OpenCV库中最核心的数据结构之一,用于表示图像和矩阵等二维、三维数据。Mat类的主要特点是可轻松地访问像素点,支持各种矩阵运算,可以实现各种图像处理算法。下面是一些常见的Mat操作: 1. 创建Mat对象:可以通过构造函数、静态方法或赋值操作符来创建

    2024年02月13日
    浏览(38)
  • <OpenCV> Mat属性

    OpenCV的图像数据类型可参考之前的博客:https://blog.csdn.net/thisiszdy/article/details/120238017 OpenCV-Mat类型的部分属性如下: size:矩阵的大小, s i z e ( c o l s , r o w s ) size(cols,rows) s i ze ( co l s , ro w s ) ; elemSize():矩阵一个元素占用的字节数( 通道数 ∗ 位数 / 8 通道数*位数/8 通道数

    2024年02月09日
    浏览(40)
  • 【OpenCV】浅谈 Mat 类

    1、Mat类介绍 Mat 类是一个用于保存图像数据或者矩阵数据的数据结构,可以说是一个矩阵类, 在OpenCV 1.0时代,存储图像数据都是使用C语言中的一个结构体IplImage,很麻烦的是IplImage需要在程序结束的时候手动释放内存,就跟我们现在malloc过来的堆区空间一样。 不过随着Open

    2024年02月09日
    浏览(35)
  • Opencv::Mat的学习

    OpenCV中6种访问Mat元素的方法_opencv 访问mat元素_JIN_嫣熙的博客-CSDN博客

    2024年02月11日
    浏览(45)
  • OpenCV(Mat类)

    目录 1、什么是Mat类 2、Mat类组成  3、Mat类能存储的数据类型  4.Mat类的创建 4.1 利用矩阵宽、高和类型参数创建  4.2 利用矩阵Size()结构和数据类型参数来创建 4.3 利用已有Mat类来创建  5、Mat类的赋值 5.1 创建时赋值 5.2 类方法赋值 5.3 枚举赋值  6、Mat类数据的读取 6.1 Mat类的常

    2024年02月12日
    浏览(37)
  • opencv Mat详解

    我们有多种方法从现实世界获取数字图像:数码相机、扫描仪、计算机断层扫描和磁共振成像等。在任何情况下,人类看到的都是图像。当将其转换为数字图像在设备中进行存储时,我们记录的是图像中每个点的数值。 例如,在上面的图像中,可以看到汽车的镜子只是一个包

    2024年02月07日
    浏览(38)
  • OpenCV Mat类

    设为A,B为Mat类型,s是Scalar类型,a是一个实数。下面列出关于Mat的常用运算: OpenCV是一个广泛使用的计算机视觉库,它提供了许多用于图像处理和计算机视觉任务的函数和工具。在OpenCV中,Mat是一个重要的数据结构,用于表示图像和矩阵。Mat类提供了一种方便的方式来处理

    2024年02月09日
    浏览(37)
  • 【OpenCV】Mat矩阵解析 Mat类赋值,单/双/三通道 Mat赋值

    OpenCV Mat类详解

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包