我是opencv的新手,所以我正在尝试学习基本概念。
所以我从一个简单的垫开始,并尝试将中间行设置为某个值。
我希望整行显示相同,但只有行的前半部分是白色。
#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);
那么为什么只有一半的行设置?
答案 0 :(得分:2)
矩阵似乎是无符号短数据类型,这并不意味着您需要使用:
m.at<unsigned short>(SHEIGHT/2,x) = 65000;
而不是unsigned char
,这可以解释为什么你只填充了一半的行。
答案 1 :(得分:2)
你也可以使用row来设置行中的所有像素而不使用for循环:
m.row(SHEIGHT/2) = 65000