Mat image (ROW, COL, CV_TYPE);
image.at
- COL: Column
- CV_TYPE: data type ( for example : CV_8UC3 = 8 bit 3 channels)
- DATA_TYPE: Mat creation data type ( for example : float, usigned char)
- WANT_ROW: access to the desired row
- WANT_COL: access to the desired column
[Advantage]: Access after validation progress , so safe and accurate approach .
[Disadvantage]: most slow in 3 ways.
2. Ptr approach
Mat image (ROW, COL, CV_TYPE);
image.ptr
- ROW: Row
- COL: Column- CV_TYPE: data type ( for example : CV_8UC3 = 8 bit 3 channels)
- DATA_TYPE: Mat creation data type ( for example : float, usigned char)
- WANT_ROW: access to the desired row
- WANT_COL: access to the desired column
[Advantage]: Access is faster than first way.
[Disadvantage]: direct access to the data , but way slower than third way .
3. Data approach
Mat image (ROW, COL, CV_TYPE);
DATA_TYPE * data = (DATA_TYPE *) image.data;data [WANT_ROW * image.cols + WANT_COL]
- ROW: Row
- COL: Column
- CV_TYPE: data type ( for example : CV_8UC3 = 8 bit 3 channels)
- DATA_TYPE: Mat creation data type ( for example : float, usigned char)
- WANT_ROW: access to the desired row
- WANT_COL: access to the desired column
[Advantage]: very fast.
[Disadvantage]: not check validation , it is hard to know inadequate access.
This is sample code.
http://study.marearts.com/2016/06/opencv-pixel-access-at-ptr-data.html