Я пытаюсь построить матрицу расстояний между кадрами в C++ с OpenCv 2.4.10. Я думаю, мне нужен коврик из матов, поэтому я могу поместить в первую строку и col все кадры и сделать оператор XOR за кадром. Но для этого мне нужна структура, подобная матрице, которая содержит в каждой позиции другую матрицу. Есть ли что-то вроде Мата Маца? Или вы можете предложить другое решение? Я думал об использовании Vector, но мне нужно больше, чем массив Mat. Спасибо, что я новичок в этом!Opencv C++ создаем коврик матов
ответ
Если я правильно понял, то, что вы ищете, является двумерным объектом Mat, каждый из которых является другим двумерным объектом Mat. Это эквивалентно созданию 4-мерного объекта Mat. OpenCV имеет такую функциональность - это только включает в себя использование одного из менее популярных и менее удобных Мастут конструкторы:
const int num_of_dim = 4;
const int dimensions[num_of_dim] = { a, b, c, d }; // a, b, c, d - desired dimensions defined elsewhere
cv::Mat fourd_mat(num_of_dim, dimensions, CV_32F);
Check Mat :: Mat (INT ndims, константные INT * размеры, Int типа) конструктора в OpenCV документах :
http://docs.opencv.org/2.4.10/modules/core/doc/basic_structures.html#Mat::Mat(int%20ndims,%20const%20int *% 20sizes,% 20int% 20type)
, а также поиск по фразе "многомерный" и "п-мерного" на этой странице, чтобы найти больше примеров и документации.
EDIT:
В соответствии с просьбой, я показываю, как загрузить изображение в такой структуре. Это не красиво, но я думаю, самый простой способ, чтобы скопировать пиксель изображения на пиксель:
img = imread("path/img.jpg", 1);
for (int i = 0; i < 179; ++i)
{
for (int j = 0; i < img.rows; ++i)
{
for (int k = 0; j < img.cols; ++j)
{
const int coords1[4] = { i, 0, j, k };
const int coords2[4] = { 0, i, j, k };
fourd_mat.at<float>(coords1) = img.at<float>(j, k); //line 1
fourd_mat.at<float>(coords2) = img.at<float>(j, k); //line 2
}
}
}
Линия комментировал, как LINE1 эквивалентно вашей линии struttura [я] [0] = IMG; и строка2 эквивалентна struttura [0] [i] = img; после того, как две самые внутренние для петель закончат свою работу.
Код выше предполагает, что ваш тип изображения CV_32F - если это 8UC, вы должны заменить поплавок с Uchar в в() функции.
- 1. opencv kmeans кластеризация нескольких матов
- 2. Разница в типах матов OpenCV
- 3. Android OpenCV ошибка новый коврик
- 4. Конструктор матов из пользовательских данных в OpenCV
- 5. Получите коврик от VideoCapture в OpenCV 3
- 6. OpenCV - как создать коврик из uint8_t указателя
- 7. Набор выделенных матов с необработанными данными OpenCV
- 8. Возвращение нескольких матов из метода OpenCV
- 9. Коврик Opencv усекает все двойные записи
- 10. Прозрачный коврик OpenCV, использование с VideoWriter
- 11. Ошибка при добавлении двух матов в OpenCV, Java
- 12. андроид растровый и OpenCV коврик - тот же код отличается результат
- 13. OpenCV обнаруживает ROI, создавая подмат и копируя исходный коврик
- 14. Преобразования OSG изображения в OpenCV коврик для обработки
- 15. Назначьте коврик 3x1 на 3-х канальный коврик
- 16. Почему типы матов не должны быть указателями?
- 17. Как я могу выполнить композицию Матов с emgu (C#)?
- 18. C++ (и openCV): Накопление числа Матов в векторе <Mat>
- 19. Выберите подмножество Mat и скопируйте их, чтобы создать новый коврик в C++/Opencv
- 20. jqplot коврик не работает
- 21. SQL строки усечение/коврик
- 22. Передайте массив Матов в машинный код
- 23. лучший способ создать коврик из CIImage?
- 24. Изменение цвета скрипичных матов matplotlib
- 25. добавление матов с различной формой python
- 26. изображение нагрузки с OpenCV Mat C++
- 27. OpenCV (JavaCV) vs OpenCV (интерфейсы C/C++)
- 28. Поиск уникальных строк в ARMA :: коврик
- 29. Почему мы создаем экземпляры классов?
- 30. Получение матов из фреймов в gif с использованием OpenCV и Java
спасибо Я изучу его и дам вам знать! – stardust
Эй, это то, что вы искали? – KjMag