0

我在 rgb 或 opencv bgr 中遇到问题

我想要做的是找到某些图片的 bgr 的总体值,但是每次我运行程序而不用完全相同的图片更改任何东西时,bgr 的值都会不断变化。

这就是我编码以查找 bgr 的值的方式

#include <opencv\cv.h>
#include <opencv\highgui.h>

using namespace std;
    char path[255];

int main( int argc, char** argv )
{
    IplImage *red[50];
    IplImage *green[50];
    IplImage *blue[50];

    for(int i = 1; i <= 50; i++)
    {
        IplImage *img;
        sprintf(path, "C:\\picture (%01).bmp", i);
        img = cvLoadImage(path);
        red[i] = cvCreateImage(cvGetSize(img), 8, 1);
        green[i] = cvCreateImage(cvGetSize(img), 8, 1);
        blue[i] = cvCreateImage(cvGetSize(img), 8, 1);
        cvSplit(img, blue[i], green[i], red[i], NULL);
        cvReleaseImage(&img);

        int total = (int)(blue[i]) + (int)(green[i]) + (int)(red[i]);
        cout << total << endl;
        cvWaitKey(1);
    }
cvWaitKey(0);
return 0;
}
4

2 回答 2

1

我不确定你是如何实现类型转换IplImageint

int total = (int)(blue[i]) + (int)(green[i]) + (int)(red[i]);

但是您当然需要对每个通道(而不是逐个图像)使用逐像素求和来找到总体值。

于 2013-07-05T10:28:01.167 回答
0

尝试使用两个循环而不是一个循环,一个用于加载图像,另一个用于执行您的操作,如果它有效,请告诉我..

于 2013-07-05T10:28:30.387 回答