码迷,mamicode.com
首页 > 其他好文 > 详细

OPENCV学习笔记2-8_Mat_类

时间:2017-09-30 20:53:27      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:std   names   ace   可能性   编译   像素   name   访问   include   

    在读取矩阵元素以及获取矩阵某行的地址时,需要指定数据类型。 如果使用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_类

标签:std   names   ace   可能性   编译   像素   name   访问   include   

原文地址:http://www.cnblogs.com/yunfung/p/7615962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!