#c #opencv #matrix
#c #opencv #матрица
Вопрос:
Я новичок в c и opencv. У меня есть 3 матрицы, из этих трех матриц я хочу найти максимальную матрицу и минимальную матрицу для примера
A = [1 2 3] B = [2 4 6] c = [4 8 12] тогда A — минимум, а C — матрица с высокими скалярными значениями, есть ли какой-либо способ найти ее такой, какая она есть, любая помощь приветствуется.
С другой стороны, я пробовал следующим образом, но это неверно.
Mat A=imread("") // intialise the mat 1X3
Mat B= //intialise the mat 1X3
if (A>B) printf("Matrix A greater than B") // this line encounter the Error that is not the correct way of doing that.
Комментарии:
1. Когда именно вы считаете, что матрица больше другой матрицы?
2. @Нико Шертлер я не знаю точного способа сделать это, но мне нужно найти небольшую матрицу
3. Может быть, сравнить средние значения?
4. Но перед этим вы должны хотя бы посмотреть документацию о том, как перебирать пиксели Opencv mat!
Ответ №1:
Привет, в OpenCV для вас реализованы функции cv :: min и max! Вот пример использования! Надеюсь, это поможет!
int _tmain(int argc, _TCHAR* argv[])
{
//Fill Random Numbers in 3 Mats
Mat mTest(5,5,CV_8UC3),mMin,mMax;
randn(mTest,Scalar::all(125),Scalar::all(100));
Mat mTest_3[3];
split(mTest, mTest_3);
//Find Min and max from 3 Mats!
mMin=cv::min(mTest_3[0],cv::min(mTest_3[1],mTest_3[2]));
mMax=cv::max(mTest_3[0],cv::max(mTest_3[1],mTest_3[2]));
cout<< "Inputs 1: n"<<mTest_3[0]<<"n";
cout<< "Inputs 2: n"<<mTest_3[1]<<"n";
cout<< "Inputs 3: n"<<mTest_3[2]<<"n";
cout<< "Min : n"<<mMin<<"n";
cout<< "Max : n"<<mMax<<"n";
}