OPENCV学习笔记2-8_Mat_类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OPENCV学习笔记2-8_Mat_类相关的知识,希望对你有一定的参考价值。

    在读取矩阵元素以及获取矩阵某行的地址时,需要指定数据类型。 如果使用Mat_类,就可以在变量声明时确定元素的类型,访问元素时不再需要指定元素类型,这样使代码简洁,又减少了出错的可能性。

#include <iostream>
#include "opencv2/opencv.hpp"
#include <stdio.h>
using namespace std;
using namespace cv;
int main( int argc, char* argv[] )
{
    Mat M( 600, 800, CV_8UC1 );
/*
    for ( int i = 0; i < M.rows; ++i )
    {
    //获取指针时,需要指定类型
        uchar * p = M.ptr<uchar>( i );
        for ( int j = 0; j < M.cols; ++j )
        {
            double d1 = (double) ( (i + j) % 255);
    //用at()读写像素时,需要指定类型
            M.at<uchar>( i, j ) = d1;
    //代码错误,应使用at<uchar>(),但编译时不会提醒错误
            double d2 = M.at<double>( i, j );
        }
    }
*/
   //在变量声明时指定矩阵元素类型
    Mat_<uchar> M1 = (Mat_<uchar>&)M;
    for ( int i = 0; i < M1.rows; ++i )
    {
        uchar * p = M1.ptr( i );
        for ( int j = 0; j < M1.cols; ++j )
        {
            double d1 = (double) ( (i + j) % 255);
            M1( i, j ) = d1;
            double d2 = M1( i, j );
        }
    }
    cout <<"M = "<< M <<endl;
    return(0);
}

 

以上是关于OPENCV学习笔记2-8_Mat_类的主要内容,如果未能解决你的问题,请参考以下文章

OPENCV学习笔记2_Mat 加载, 显示

OPENCV学习笔记3_Mat 保存

OPENCV学习笔记1-8_选取图像局部区域

数字图像处理OpenCV3 学习笔记

opencv mat的数据类型CV_32FC1变成CV_8UC1

[OpenCV学习笔记2][Mat数据类型和操作]