concate는 deepcopy
videoCapture가 굉장히 비싼거였어서 캡처보드라는걸 메인보드에 꽂았았다.
비디오 저장 : videoWriter
이미지 픽셀값 읽고 쓰기 :
세로가 row,y 가로가 column, x
Reference 타입
Mat img;
Mat & I = img;
걔를 다른 이름으로 부르는 별칭이다. 포인터가 넘어오듯이 레퍼런스가 넘어오면 함수가 끝나도 값이 변경되어있다.
p = I.ptr(row):
-> c++ template이란게 있다.
Template
class Matrix
{
public :
Matrix(int nrows, int cols); // 생성자( Constructor)
{
data = new T[nrows*ncols];
}
~Matrix()
{
delete [] data;
}
// 하는일 똑같은데, 타입만 다름.
// 리유저블이 다름... 이때 Template을 쓰는 것.
int foo (int a ) { return a+1;}
float foo(float a) { return a+1.f;}
template
S foo (S a ) { return a+1;}
S foo(S a) { return a+1.f;}
protected: // 상속 받은 애만 ..
T * data;
};
int main()
{
Matrix a(3,4); -> instance 만들어짐.
// integer = T
a.foo(3);
}
Iterator
c++ standard Alogrithm -> STL
// 세 축으로 이루어짐
1. Container
2. Iterator
3. Alogrithm
#include
using namespace std;
int main()
{
vector //<- class Template이네! a;
list b;
얘네는 다 컨테이너다.
벡터는 queue고, list는 더블 링크드 리스트이다.
vector는 링크가 forward로만 되어있고, list는 forward랑 backward
vector::iterator iter = a.begin();
int sum=0;
for(vector::iterator iter = a.begin();
iter!=a.end();
++iter)
{
int a = i++;
int b = ++i;
// iterator를 마치 포인터ㄹ처럼)
sum+=(*iter);
}
return 0;
}
처음에 30 잡아놓고, 채우다가 꽉채우면 60개 또 잡아놓고 deepcopy.
size는 push_back 콜 할수록 숫자가 늘어남.
class iterator
{
iterator& operator++()
{
예전값을 기억하고 있어야됨 i++는
그냥 자기 자신을 보내면됨 ++i는
return (*this);
}
}
int a = i++: -> i를 a넣고, i를 증가시킴
-> int tmep = i;
i= i+1;
return temp;
int b = ++i; -> i를 증가시키고 b를 넣음
iter++;
++iter;