Существуют ли какие-либо функции в OpenCV, которые равны функциям MATLAB sub2ind
и ind2sub
? Мне нужны обе функции для моего приложения на C++. Если у OpenCV эти функции отсутствуют, существуют ли какие-либо библиотеки C++, которые обеспечивают эквивалентную функциональность?MATLAB sub2ind/ind2sub в OpenCV/C++
6
A
ответ
7
Вы можете написать их сами:
int sub2ind(const int row,const int col,const int cols,const int rows)
{
return row*cols+col;
}
void ind2sub(const int sub,const int cols,const int rows,int &row,int &col)
{
row=sub/cols;
col=sub%cols;
}
0
Вот мой код для 2D матрицы. Я протестировал его.
cv::Mat Utilities::Sub2Ind(int width, int height, cv::Mat X, cv::Mat Y)
{
/*sub2ind(size(a), rowsub, colsub)
sub2ind(size(a), 2 , 3) = 6
a = 1 2 3 ;
4 5 6
rowsub + colsub-1 * numberof rows in matrix*/
std::vector<int> index;
cv::transpose(Y,Y);
cv::MatConstIterator_<int> iterX = X.begin<int>(), it_endX = X.end<int>();
cv::MatConstIterator_<int> iterY = Y.begin<int>(), it_endY = Y.end<int>();
for (int j = 0; j < X.cols; ++j,++iterX)
{
//running on each col of y matrix
for (int i =0 ;i < Y.cols; ++i,++iterY)
{
int rowsub = *iterY;
int colsub = *iterX;
int res = rowsub + ((colsub-1)*height);
index.push_back(res);
}
int x = 5;
}
cv::Mat M(index) ;
return M;
}
Смежные вопросы
- 1. matlab написать уравнение в MATLAB?
- 2. Предотвращение «MATLAB: unassignedOutputs» в Matlab
- 3. MATLAB: пустой участок в MATLAB
- 4. Matlab: Функция качения в matlab
- 5. fft2 в MATLAB vs dft в сравнении с OpenCV C++
- 6. MATLAB: Свернуть ячейки кода в редакторе MATLAB
- 7. Не равен (~ =) в MATLAB! Неожиданный оператор MATLAB
- 8. Matlab: Сохранение больших чисел в Matlab
- 9. Matlab: Противоположная функция «простых чисел» в matlab
- 10. Matlab RGB значения цвета в Matlab
- 11. MATLAB Кодер и парфор в MATLAB R2014b
- 12. Matlab Convertion типа HSV в Matlab
- 13. Как проверить версию MATLAB Coder в MATLAB?
- 14. Добавление графического интерфейса MATLAB в код MATLAB
- 15. MATLAB Compiler vs MATLAB Coder
- 16. MatLab Coder - MatLab до C
- 17. Matlab: программные программы запускать Matlab
- 18. Обнаружение процессов matlab изнутри matlab
- 19. Как сохранить исходный код matlab в строку в matlab?
- 20. matlab в C C++ и C C++ в matlab
- 21. В MATLAB можно преобразовать java логическое значение в логику MATLAB?
- 22. SPM в matlab: как вызвать функцию matlab в редакторе партий
- 23. MATLAB: Нужно заменить все NaN в массиве в Matlab?
- 24. инвертированная матрица в matlab/сортировка матрицы в matlab
- 25. Извлечение определенных элементов в MATLAB из массивов в MATLAB
- 26. Проблема наследования Matlab OOP Matlab (функциональный блок Simulink MATLAB)
- 27. Построение «Hi» в MATLAB
- 28. Сортировка в Matlab
- 29. Преобразование C++ в MATLAB
- 30. Окрашивание изображения в MATLAB
Обратите внимание, что MATLAB 'sub2ind' и' ind2sub' также работают на многомерных массивах (а не только на двумерных матрицах). Это менее важно в OpenCV, потому что cv :: Mat обычно представляет их как 2D-массивы, но с несколькими каналами (срезами). См. [Здесь] (http://docs.opencv.org/modules/core/doc/basic_structures.html#Mat): http://docs.opencv.org/_images/math/29954d8c450a7ef8c777681a299e7e510c5c45e4.png – Amro
@paghdv Я не знаю Понимаете, вы отвечаете, можете ли вы объяснить, например, у меня есть = [1 2 3; 4 5 6] и я делаю sub2ind (размер (a), 2,2) ответ должен быть 4 – Gilad
@ Gilad вам нужно сделать res = sub2ind (1,1, a.cols, a.rows) .... (Я предполагаю, что вы имеете в виду позицию [1,1], потому что [2,2] не существует ... это индекс на основе нуля). Результат - 4 – paghdv