Читать «Мультимедийное Программирование OpenCV» — Serdar Orazdurdyyev онлайн
Страница 5 из 6
start(начало) в диапазоне, end(конец) не в диапазоне Функция операции с матрицей / Matrix Operation Function • Matexp inv(метод): расчет обратной матрицы – метод • Matexp inv(method) : inverse matrix calculation – method • Matexp mul (input matrix): Выполнить поэлементное (element-wise) умножение двух матриц • Matexp t () : вычислить транспонированную матрицу(transposed matrix) • Одновременные уравнения (simultaneous equation) #include using namespace cv; using namespace std; int main() { float data[] = { 1, 0, 2, -3, 2, 6, -1, -2, 3 }; float ans[] = {6, 30, 8}; Mat m1(3, 3, CV_32F, data); Mat m2(1, 3, CV_32F, ans); Mat m2_t = m2.t(); Mat m1_inv = m1.inv(DECOMP_LU); Mat x = m1_inv * m2_t; cout << "[m1] = " << endl << m1 << endl; cout << "[m1_inv] = " << endl << m1_inv << endl << endl; cout << "[m2(transposed)] = " << endl << m2_t << endl << endl; cout << “solution x1, x2, x3 = " << x.t() << endl; } насыщенный_ бросок < > / saturate_cast < > • image data는 основном представляют собой кодированные(encoding) данные с 8 битами на канал. • Поскольку он использует только 8bit, он имеет ограниченный диапазон значений пикселей (0 ~ 255). • saturate_cast() template method : Когда значение сохраняется в 8-битном, если оно превышает 8-битный диапазон, оно сохраняется как 0 или 255 • Ex) Mat m1(2, 2, CV_8U); m1(0, 0) = -50; // -> 206 m1(0, 1) = 300; // -> 44 m1(1, 0) = saturate_cast(-50); m1(1, 1) = saturate_cast(300); 4. Пользовательские интерфейсы OpenCV (OpenCV User Interfaces) Контрольние виндов / Window Control • Named Window (winname, flags) : Устанавливает имя window и создает window с этим именем – flags : Изменение размера window • imshow (): отображает матрицу "mat" как окно в окне winname • destroyWindow (): удаляет указанное окно с экрана • destroyAllWindows (): удалить все видимые окна • moveWindow (x, y): переместить окно winname в указанную позицию (x (столбец, y (строка)) #include using namespace cv; using namespace std; int main() { Mat image1(300, 400, CV_8U, Scalar(255)); Mat image2(300, 400, CV_8U, Scalar(100)); string title1 = "white window control"; string title2 = "gray window control"; namedWindow(title1, WINDOW_AUTOSIZE); namedWindow(title2, WINDOW_NORMAL); moveWindow(title1, 100, 200); moveWindow(title2, 300, 200); imshow(title1, image1); imshow(title2, image2); waitKey(); destroyAllWindows(); return 0; } Контрольние событиями клавиатуры / Keyboard Event Control • waitKey (delay, задержка): ожидает ввода ключа в течение времени задержки(delay), возвращает(return) значение клавиши, когда происходит событие клавиши, – delay : время задержки. ms. – delay <= 0 : Бесконечное ожидание, пока не произойдет ключевое событие – delay > 0 : дождитесь ввода ключа в течение времени задержки. return (Возвращает) -1, если в течение времени задержки нет клавишного ввода • Используйте waitKeyEx () для ввода клавиши со стрелкой (arrow key) • Event (Событие) происходит только когда window active (активно). Контрольние событиями мыши / Mouse Event Control • Создать callback function (функцию обратного вызова) (event handler) (обработчик событий) для обработки событий мыши и зарегистрировать эту функцию в системе через setMouseCallback () Конец ознакомительного фрагмента.