使用OpenCV实现零排的有效方法

Ota*_*our 1 opencv mask

我在Windows 7上使用OpenCV 2.2.

我正在制作一个掩码,其中所有行都是1到第400行,0是超出该行的行.我使用cv :: Mat :: ones()初始化掩码,并想知道将行超过400的最有效方法是什么.我可以使用for循环但是想知道是否有更高效,更整洁的方法它.

谢谢,彼得.

Sam*_*Sam 6

有多种方法可以做到:

首先是子矩阵

Mat bigImg(width, height, CV_8UC3);
bigImg(Rect(0,0,width, height/2)) = Scalar::all(1); // upper half ones
bigImg(Rect(0,height/2,width, height/2)) = Scalar::all(0); // lower half zeros
Run Code Online (Sandbox Code Playgroud)

或者您可以使用RowRangeColRange获得相同的效果

bigImg(rowRange, colRange) = Scalar::all(n);
Run Code Online (Sandbox Code Playgroud)

只需查看有关如何使用范围的文档