scan-c
cv::Mat src = cv::imread(filePaths[0], cv::IMREAD_COLOR);
cv::Mat gray;
cv::cvtColor(src, gray, cv::COLOR_RGB2GRAY);
//scan-c
cv::Mat gray0(gray.clone());
int nRows = gray0.rows;
int nCols = gray0.cols * gray0.channels();
if (gray0.isContinuous())
{
nCols = nCols * nRows;
nRows = 1;
}
for (int row = 0; row < nRows; ++row)
{
uchar* p = gray0.ptr<uchar>(row);
for (int col = 0; col < nCols; ++col)
{
p[col] = col % 255;
}
}
scan-iterator
//scan-iterator
cv::Mat gray1(gray.clone());
cv::MatIterator_<uchar> begin = gray1.begin<uchar>();
cv::MatIterator_<uchar> end = gray1.end<uchar>();
int k = 0;
for (; begin != end; ++begin, ++k)
{
*begin = k % 255;
}
k = 0;
cv::Mat src1 = src.clone();
cv::MatIterator_<cv::Vec3b> begin3 = src1.begin<cv::Vec3b>();
cv::MatIterator_<cv::Vec3b> end3 = src1.end<cv::Vec3b>();
for (; begin3 != end3; ++begin3, ++k)
{
(*begin3)[0] = k % 255;
(*begin3)[1] = k % 255;
(*begin3)[2] = k % 255;
}
scan Vec3b
//scan at
k = 0;
cv::Mat gray2 = gray.clone();
for (int j = 0; j < gray2.rows; ++j)
{
for (int i = 0; i < gray2.cols; ++i)
{
gray2.at<uchar>(j, i) = k % 255;
++k;
}
}
k = 0;
cv::Mat src2 = src.clone();
cv::Mat_<cv::Vec3b> _src2 = src2;
for (int j = 0; j < src2.rows; ++j)
{
for (int i = 0; i < src2.cols; ++i)
{
_src2(j, i).val[0] = k % 255;
_src2(j, i)[1] = k % 255;
_src2(j, i).val[2] = k % 255;
++k;
}
}