新版本的opencv中,习惯于用Mat处理,而一般学习之初,用旧版本的写法比较多(IplImage)。突然间,遇到这样的问题,需要用新的版本实现图像灰度化处理,发现需要访问图像矩阵的数据元素。要找到旧版本的实例比较多,实现的方法介绍也比较多(方法可以参考http://blog.csdn.net/likezhaobin/article/details/6915754)。本帖只实现其中一种方法,其余的方法, 修改少量代码就行。
具体代码如下:
#include "stdafx.h"
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv/cv.h"
using namespace std;
using namespace cv;
void cvtCOLOR(Mat src, Mat dst)
{
float R, G, B;
for (int y = 0; y < src.rows; y++)
{
uchar* data = dst.ptr<uchar>(y);
for (int x = 0; x < src.cols; x++)
{
B = src.at<Vec3b>(y, x)[0];
G = src.at