【发布时间】:2012-08-16 14:09:24
【问题描述】:
我正在使用以下视频帧代码来设置一定范围内的矩阵值:
for ( int row = 0, i = 0; row < srcMat.rows; ++row, i ++ )
{
uchar* p = medianMat.ptr ( row );
for ( int col = 0, j = 0; col < srcMat.cols; ++ col, j ++ )
{
dstMat ( cv::Range::all(), cv::Range ( i * 5 +1, i * 5 + 4 )).setTo ( *p );
data++;
}
}
我需要将 *p 复制到 dstMat 的三个连续值中,并在它们之前和之后留一个零空格。也就是说,如果我的 dstMat 全部为零,并且 *p 值为“1,2,3”,那么我的目标是让 dstMat 看起来像“01110 02220 03330”等。我希望我让这个容易理解。 我的问题是:一帧大约需要 70 到 80 毫秒,这对我的情况来说太慢了。我最多有 30 毫秒的单帧。有没有更有效的方法来做到这一点? 此外,“dstMat”值在“for”循环之外全为零。你有什么想法?非常感谢你。
【问题讨论】:
-
你到底想做什么?范围很可能会在每次调用时检查边界 - 如果您编写您尝试设置像素的内容,我们可能会更快地编写一些东西
-
我编辑了我的问题,谢谢。