c++ - opencv - rgb值不断变化

标签 c++ opencv rgb

我在 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;
}

最佳答案

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

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

但您当然需要对每个 channel (而不是逐个图像)逐个像素求和以找到整体值。

关于c++ - opencv - rgb值不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17486352/

相关文章:

c++ - 如何判断哪个#include 提供了哪个对象?

c++ - 从二进制数据恢复 MP3 文件

c++ - 如何从 OpenCV C++ 中的图像中裁剪特定的矩形部分(ROI)

python - 从python中的视频中获取特定的帧序列

opengl - 使用 GLSL 将 RGB 转换为 YUV

java - java中的图像操作

c++ - c++17 中 std::destroy_at() 的用法?

C++ vector 排序

python - OpenCV BGR 和 PyPlot RGB

java - 更改图像 RGB 值的 lsb 值给出不一致的值