Итак, я выяснил, как это сделать, благодаря @ ypnos .
1.) Следует помнить, что если array
in C++
инициализируется как:
int arr1[3] ={31,21,57};
cout<<*arr1<<endl //Prints 31
Значение массива указывает на первый элемент, сохраненный в массиве. Это не относится к std::array
.
Таким образом, основываясь на том же понимании, мы можем инициализировать и затем разбить массив следующим образом:
Mat rgb1[3] ;
cv::split(modified1 , rgb1);
Так что rgb1
ведет себя как указатель типа Mat
и защищает сигнатуру
void split(const Mat& src, Mat* mvbegin)
Но тот факт, что mvbegin
должен быть массивом размера 3, а не просто указателем, это то, что я не нашел явно записано в документах .