2013-12-10 4 views
1

Я новичок в CV, и у меня возникает вопрос. Я хочу создать затухающую серой полосой (от черного до белого).cv: Mat, каждый второй пиксель установлен

Так я initializied циновки:

Mat fadedgrey=Mat(20,256,CV_8UC1); 

, когда я пишу pixelvalues:

for(int x=0;x<20;x++){ 
    for(int y=0;y<256;y++){ 
    fadedgrey.at<int>(x,y)=y;}} 

результат заключается в следующем: только каждый второй столбец написано, но я думал, что CV_8UC1 это один -канал, а не двухканальный мат.

Например, значение, установленное в позиции (1,129), имеет пиксель в начале второго ряда.

Помогите мне! Приветствую!

ответ

1

Если ваша матрица имеет тип CV_8UC1, то каждый элемент имеет размер по одному байту, и вы должны использовать или аналогичный, а не .at<int>.

Хотя это не ваша проблема, вы можете также закончить вверх путаются строк и столбцов, так как ваш Mat конструктор принимает nRows,nCols, который является противоположным образом вокруг x,y

+0

фактически Uchar тип данных помог ... остальное было попыткой и ошибкой TY – user3088624

Смежные вопросы