我在使用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;
}
答案 0 :(得分:1)
我不确定您是如何从IplImage
到int
int total = (int)(blue[i]) + (int)(green[i]) + (int)(red[i]);
但你肯定需要对每个通道使用逐像素求和(而不是逐个图像)来查找整体值。
答案 1 :(得分:0)
尝试使用两个循环而不是一个循环,一个用于加载图像,另一个用于执行操作,并让我知道它是否有效..