【发布时间】:2012-03-28 16:55:30
【问题描述】:
我已经阅读了一些关于 Mat 元素访问的帖子,并进行了一些试验,但都失败了。有人可以给我一个提示吗?
Mat vect(1,3, CV_32FC1);
typedef Vec<float,1> Vec1f; //**
// access ele. at (1,1)
vect.at<Vec1f>( Point(1,1 )) = 5; // I used 1 channel so I defined a new element type as a workaround
我改编了这篇文章中的代码 opencv multi channel element access
而且,我认为 //** 行可以声明为:
typedef Vec<float> Vec1f;
根据 core.hpp 中的第 582 行: Vec(_Tp v0); //!
但是,它也不起作用
我对二维矩阵应用了同样的方法然后没问题:
Mat warp_mat(2,3, CV_32FC1);
typedef Vec<float,1> Vec1f;
warp_mat.at<Vec1f>( Point(0,0 )) = 1;
warp_mat.at<Vec1f>( Point(1,0 )) = 2;
warp_mat.at<Vec1f>( Point(2,0 )) = 5;
warp_mat.at<Vec1f>( Point(0,1 )) = 4;
warp_mat.at<Vec1f>( Point(1,1 )) = 5;
warp_mat.at<Vec1f>( Point(2,1 )) = 0;
一切正常!
【问题讨论】: