Python方法的OpenCV C 类似物

OpenCV C++ analog of Python method

本文关键字:类似物 OpenCV 方法 Python      更新时间:2023-10-16

c 中该功能的完全模拟?

# img, channels, mask, bins for each channel, ranges for each channel
hist2 = cv2.calcHist([img2], [0, 1, 2], None, [32, 32, 32],
        [50, 256, 50, 256, 50, 256])

由于C接口,我无法理解。C 版本以某种方式设置为范围。

我将首先回复您的评论之一。这是一个简短的示例,向您展示了如何计算不均匀直方图:

using namespace std;
using namespace cv;
Mat img = imread("Lenna.png", IMREAD_COLOR);
int channels[] = { 0, 1 }; 
Mat histogram;
int hist_size[] = { 4, 5 };
float range_0[] = { 0.0f, 60.0f, 120.0f, 180.0f, 255.0f }; 
float range_1[] = { 0.0f, 50.0f, 100.0f, 150.0f, 200.0f, 255.0f};
const float* all_ranges[] = { range_0, range_1 };
calcHist(&img, 1, channels, Mat(), histogram, 2, hist_size, all_ranges, false);

直方图将具有4 x 5箱,因此我必须定义5 x 6箱边界。通道0的第一个垃圾箱将存储从间隔[0,60)中的值,第二个bin将存储从间隔[60,120)的值,依此类推。

如果选择uniform参数为真,则只需要指定每个通道的第一个垃圾箱的下边界和最后一个垃圾箱的上边界即可。然后,该算法通过为每个通道的箱数将该范围划分的箱数来计算箱边界。

我认为,到目前为止,我给您的所有信息都应该能够弄清楚如何将Python代码段重写为C 代码。:)

如果您正在寻找opencv calchist函数的C 版本,则在http://docs.opencv.org/2.4/modules/imgproc/doc/上有一个很好的教程直方图。html#calchist

它显示了如何声明范围参数,我认为这是您的混乱