OpenCV:获取图像的颜色,强度和纹理

时间:2009-10-08 17:40:15

标签: image-processing opencv

我是OpenCV的新手,刚刚开始筛选API。我打算获取构成图像的每个像素的颜色,强度和纹理值。我正在摆弄结构--IplImage开始但无法取得很大进展。

请告诉我任何方法。

欢呼声

1 个答案:

答案 0 :(得分:3)

你试过OpenCV 2.0吗?他们有一个新的C ++接口,使事情变得更容易。您可以使用他们的新Mat类来加载图像,有效地访问像素等等。它比IplImage乐趣更清晰。我使用\ doc \ opencv.pdf作为我对任何我需要的东西的引用。它有教程,新C ++界面的示例等等 - 足够多,可以帮助您入门。

如果您有任何具体的OpenCV问题,请随时询问。

这里有一些演示代码可以帮助您入门:(我使用过cv名称空间):

    // Load the image (looks like MATLAB :) ? )
    Mat M = imread("h:\\lena.bmp");
    // Display
    namedWindow("Lena",CV_WINDOW_AUTOSIZE);
    imshow("Lena",M);
    waitKey();  

    // Crop out rectangle from (100,100) of size (200,200) of the red channel 
    const int offset[2] = {100,100};
    const int dims[2] = {200,200};  
    Mat Red(dims[0],dims[1],CV_8UC1);

    // Read it from M into Red
    uchar* lena = M.data;
    for(int i=0;i<dims[0];++i)
        for(int j=0;j<dims[0];++j)
        {
            // P = i*rows*channels + j*channels + c
            Red.at<uchar>(i,j) = *(lena + (i+offset[0])*M.rows*M.channels() + (j+offset[1])*M.channels()+0);
        }

    //Display
    namedWindow("RedRect",CV_WINDOW_AUTOSIZE);
    imshow("RedRect",Red);
    waitKey();