Opencv:如何设置完整的像素行?

时间:2016-10-13 17:47:41

标签: opencv

我是opencv的新手,所以我正在尝试学习基本概念。

所以我从一个简单的垫开始,并尝试将中间行设置为某个值。

我希望整行显示相同,但​​只有行的前半部分是白色。

enter image description here

 #define SWIDTH  12
 #define SHEIGHT 12

Mat m = Mat::zeros(SWIDTH, SHEIGHT, CV_16U);

for (int x=0;x<SWIDTH;x++)
    m.at<unsigned char>(SHEIGHT/2,x) = 65000;

cv::Size size(512, 512);
Mat mResized;
cv::resize(m, mResized, size,0,0,INTER_NEAREST );

cv::imshow("mResized", mResized);
cv::imshow("m", m);

那么为什么只有一半的行设置?

2 个答案:

答案 0 :(得分:2)

矩阵似乎是无符号短数据类型,这并不意味着您需要使用:

m.at<unsigned short>(SHEIGHT/2,x) = 65000;

而不是unsigned char,这可以解释为什么你只填充了一半的行。

答案 1 :(得分:2)

你也可以使用row来设置行中的所有像素而不使用for循环:

m.row(SHEIGHT/2) = 65000