Умножение матриц различных типов

107
24 мая 2021, 03:20

К примеру у меня есть две матрицы: изображение и коэффициенты, на которые нужно домножить каждый пиксель изображения. Матрицы имеют одинаковую размерность, но разные типы: изображение CV_8UC3, а коэффициенты CV_32FC1. Функция cv::multiply здесь не подойдет из-за несоответствия типов. Можно конечно перемножать циклом, но я думаю должно быть решение получше этого.

Answer 1

multiply можно использовать, только придётся подготовить матрицу коэффициентов:
- преобразовать её convertTo с коэффициентом 255 (если диапазон был 0..1) из 32FC1 в 8UC1
- потом размножить последнюю до 8UC3
- и наконец применить multiply с параметром scale 1/255

Answer 2

Насколько я понимаю тут имеется в виду применение битовой маски к изображению. Это не совсем умножение матриц. Нужно получить A[i,j]=A[i,j]*C[i,j]. Если так, то просто двойной цикл будет быстрым решением.

READ ALSO
C++, как работает RTTI

C++, как работает RTTI

Я бы хотел понять, как в C++ работает RTTI

224
VScode не видит заголовочных файлов

VScode не видит заголовочных файлов

Собрал библиотеку fltkЗаголовочныее файлы лежат по пути /usr/local/include, библиотеки /usr/local/lib

125
C++ | Websocketpp | отправить сообщение при on_tls_init

C++ | Websocketpp | отправить сообщение при on_tls_init

Ниже закомментирован код который должен работать, но выкидывает исключениеКак это исправить? В логе: invalid state

110
Дочерний блок выходит за родительский блок

Дочерний блок выходит за родительский блок

Есть header, высота 100vh, внутри него есть блок offset с двумя блоками и кнопкойПри размере экрана в 320 px этот блок съезжает вниз, выходя за родительский...

141