Изменить значение пикселя в OpenCV.js - PullRequest
0 голосов
/ 02 мая 2019

Согласно OpenCV.js документам для изменения значения пикселя вы можете использовать 3 метода:

  1. Прямая обработка данных
  2. at() семейство методов
  3. ptr() семейство методов

В заголовке раздела документов сказано: «Доступ и изменение значений пикселей», в нем приведены примеры для получения значения, но не для его изменения.,Проблема в том, что в то время как в C ++ этот код, использующий методы at или ptr, работает:

mat.at<type>(row, col) = value;

Эквивалент в javascript недопустим и дает Invalid left hand side in assignment expression:

mat.floatAt(row, col)) = value;

Я мог бы заставить его работать, используя метод прямой манипуляции данными с:

mat.data[row * this.cols * this.channels() + col * this.channels()] = value;

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

Как можно изменить значение пикселя в позиции [row, col] в CvMat с помощью OpenCV.js?

1 Ответ

0 голосов
/ 24 июля 2019

Мне удалось установить отдельные пиксели изображений (или матриц с помощью ucharPtr.

Вместо установки так:

img.ucharPtr(i, j) = 255

Я установил это так:

img.ucharPtr(i, j)[0] = 255 

Даже если изображение черно-белое и имеет только один канал

Если вы хотите установить все 4 пиксельных значения, вы можете сделать это:

src.ucharPtr(i, j)[0] = 255
src.ucharPtr(i, j)[1] = 255 
src.ucharPtr(i, j)[2] = 255 
src.ucharPtr(i, j)[3] = 0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...