Rect_
Rect_
Век-класс / Vec Class
•
Шаблонный класс(template class) для вектора(Vector) чисел с небольшим количеством элементов.
•
Укажите data type(тип данных) и количество element(элементов) между < и >.
Vec
Vec
Vec
Vec
•
Ex)
Vec
Vec
Vec2b v3(10, 10);
Vec6f v4(40.f, 230.25f, 525.6f);
Vec3i v5(200, 230, 250);
Скаляр_класс / Scalar_ Class
•
Укажите четыре значения в качеств data type(типа данных), чтобы указать значение яркости pixel(пикселя)
•
Сохраните
четыре
значения
Blue, Green, Red, Alpha(transparency).
•
Установите в 0, если при инициализации
(Initialization) не указано значение
•
Scalar_
•
Ex)
Scalar_
Scalar_
Scalar_
Scalar_
Мат Класс / Mat Class
•
Класс(class), используемый для представления image(изображения).
•
Mat
(строки, столбцы, тип, скаляр (
rows
,
cols
,
type
,
Scalar
))
строки: размер строки (rows: row size)
столбцы: размер столбца (cols : column size)
тип: тип данных (type : data type)
Скаляр: матричное значение (Scalar : matrix value)
#include
using namespace cv;
using namespace std;
int main
{
float data[] = {
1.2f, 2.3f, 3.2f,
4.5f, 5.f, 6.5f,
};
Mat m1(2, 3, CV_8U);
Mat m2(2, 3, CV_8U, Scalar(300));
Mat m3(2, 3, CV_32F, data);
Size sz(2, 3);
Mat m4(Size(2, 3), CV_64F);
Mat m5(sz, CV_32F, data);
cout << "[m1] =" << endl << m1 << endl;
cout << "[m2] =" << endl << m2 << endl;
cout << "[m3] =" << endl << m3 << endl << endl;
cout << "[m4] =" << endl << m4 << endl;
cout << "[m5] =" << endl << m5 << endl;
return 0;
}
#include
using namespace cv;
using namespace std;
int main
{
Mat m1(4, 3, CV_32FC3);
cout << “Dimension = " << m1.dims << endl;
cout << “Rows = " << m1.rows << endl;
cout << “Columns = " << m1.cols << endl << endl;
cout << “Channels = " << m1.channels << endl;
cout << “Data Type = " << m1.depth << endl;
cout << “Matrix Size = " << m1.size << endl << endl;
cout << “Total Data Number = " << m1.total << endl;
return 0;
}
#include
using namespace cv;
using namespace std;
int main
{
Mat m1(2, 3, CV_8U, 2);
Mat m2(2, 3, CV_8U, Scalar(10));
Mat m3 = m1 + m2;
Mat m4 = m2 – 6;
Mat m5 = m1;
cout << "[m2] =" << endl << m2 << endl;
cout << "[m3] =" << endl << m3 << endl;
cout << "[m4] =" << endl << m4 << endl << endl;
cout << "[m1] =" << endl << m1 << endl;
cout << "[m5] =" << endl << m5 << endl << endl;
m5 = 100;
cout << "[m1] =" << endl << m1 << endl;
cout << "[m5] =" << endl << m5 << endl;
return 0;
}
• Копирование исходной матрицы в другую матрицу / Copy original matrix to another matrix
• Матовый клон / Mat clone
• void copy To (матрица целей, матрица маски) / void copy To
(objective matrix, mask matrix)
–
mask matrix : Копирование только ненулевых элементов (elemen)
•
void convertTo
(objective matrix, data type)
–
data type : data type, которые вы хотите изменить
#include
using namespace cv;
using namespace std;
int main
{
double data[] = {
1.1, 2.2, 3.3, 4.4,
5.5, 6.6, 7.7, 8.9,
9.9, 10, 11, 12
};
Mat m1(3, 4, CV_64F, data);
Mat m2 = m1.clone; // copy m1 to m2
Mat m3, m4;
m1.copyTo(m3); // copy m1 to m3
m1.convertTo(m4, CV_8U); // copy m1 to m4 converting to uchar
cout << "[m1] =\n" << m1 << endl;
cout << "[m2] =\n" << m2 << endl;
cout << "[m3] =\n" << m3 << endl;
cout << "[m4] =\n" << m4 << endl;
return 0;
}
векторныйкласс / vector Class
•
Контейнер
последовательностей
(Sequence Container) C++ STL(Standard Template Library)
•
доступ
к
элементу
(element access)
вектора
(vector) :
используйте
оператор
индекса
(subscript operator), [],
как
массив
(array)
•
vector : конструктор(constructor)
•
void push_back : добавляет элемент в конец vector
•
void pop_back : удалить последний элемент
#include
using namespace cv;
using namespace std;
int main
{
vector
v1.push_back(Point(10, 20));
v1.push_back(Point(20, 30));
v1.push_back(Point(50, 60));
vector
Size arr_size[] = { Size(2, 2), Size(3, 3), Size(4, 4) };
int arr_int[] = { 10, 20, 30, 40, 50 };
vector
vector
cout << "[v1] " << ((Mat)v1) << endl << endl;
cout << "[v2] " << ((Mat)v2) << endl << endl;
cout << "[v2] " << ((Mat)v2).reshape(1, 1) << endl;
cout << "[v3] " << ((Mat)v3).reshape(1, 1) << endl;
cout << "[v4] " << ((Mat)v4).reshape(1, 1) << endl;
return 0;
}
Классдиапазона / Range class
•
Используется в основном для указания диапазона row(строк) и column(столбцов) в классе Mat.
•
Range(int start, int end)
•
start(начало) в диапазоне, end(конец) не в диапазоне
Функция операции с матрицей / Matrix Operation Function
•
Matexp
inv
(метод): расчет обратной матрицы
– метод
•