gpt4 book ai didi

c++ - opencv brg 颜色直方图不起作用

转载 作者:行者123 更新时间:2023-11-28 06:24:30 24 4
gpt4 key购买 nike

我正在阅读 OpenCV 2 Computer Vision Application Programming Cookbook 并在其中实现示例。

不幸的是,在第 4 章中,颜色直方图示例不起作用。

代码如下。但是这段代码没有给我直方图或任何错误。另外,它说彩色图像直方图是三维的。我不明白为什么是你而不是两个。

    #include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(){
Mat image = imread("waves.jpg");
int histSize[3];
float hranges[2];
const float* ranges[3];
int channels[3];
// Prepare arguments for a color histogram
histSize[0] = histSize[1] = histSize[2] = 256;
hranges[0] = 0.0; // BRG range
hranges[1] = 255.0;
ranges[0] = hranges; // all channels have the same range
ranges[1] = hranges;
ranges[2] = hranges;
channels[0] = 0; // the three channels
channels[1] = 1;
channels[2] = 2;

Mat hist;
// Compute histogram
calcHist(&image,
1, // histogram of 1 image only
channels, // the channel used
cv::Mat(), // no mask is used
hist, // the resulting histogram
3, // it is a 3D histogram
histSize, // number of bins
ranges // pixel value range
);

cout << hist.at<int>(100, 100, 0) << endl;
cout << hist.at<int>(100, 100, 1) << endl;
cout << hist.at<int>(100, 100, 2) << endl;

return 0;
}

最佳答案

  1. 上面的代码确实为您提供了 3D 直方图。我不太明白为什么你认为它没有。
  2. 为什么它是三维的?因为参数int dim在方法 calcHist() 中具有值 3。如果您想要二维直方图,则为 2
  3. 您想使用 cout << hist.at<int>(x, y, z) << endl; 打印 3D 直方图的值其中 x、y 和 z 是 3D 直方图的坐标。

关于c++ - opencv brg 颜色直方图不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com