1、 加载图像文件
char* img_file_name = "..\\res\\biubiu.jpg";
// 加载一个图片
Mat srcImg = imread(img_file_name);
// 加载失败退出
if (srcImg.empty())
{
printf("load image failed");
return 0;
}
2、 显示图像
// 创建一个窗体
namedWindow(img_file_name, CV_WINDOW_AUTOSIZE);
// 显示图片
imshow(img_file_name, srcImg);
3、操作图像数据
for (int r = 0; r < height; r++) // 遍历行
{
uchar* pSrcRowData = srcImg.ptr<uchar>(r); // 取源图的行指针
uchar* pNewRowData = newImage.ptr<uchar>(r);// 取新图的行指针
for (int c = 0; c < witdh; c++) // 遍历列
{
// 把源图的数据修改一下,填到新图上去。
pNewRowData[c*channels + 0] = saturate_cast<uchar>(pSrcRowData[c*channels + 0]+20); // B
pNewRowData[c*channels + 1] = saturate_cast<uchar>(pSrcRowData[c*channels + 1] + 50); // G
pNewRowData[c*channels + 2] = saturate_cast<uchar>(pSrcRowData[c*channels + 2]- 60); // R
}
}
4、运行效果:
5、工程项目源文件下载:
本例在Debug – x64下编译通过。
ZIP包中包含了开发环境,可以直接编译运行。