gpt4 book ai didi

python - Python 方法的 OpenCV C++ 模拟

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

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接口(interface)我看不懂。 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 个 bin,所以我必须定义 5 x 6 个 bin 边界。 channel 0 的第一个 bin 将存储区间 [0, 60) 的值,第二个 bin 将存储区间 [60, 120) 的值,依此类推。

如果您选择 uniform 参数为真,则只需为每个 channel 指定第一个 bin 的下边界和最后一个 bin 的上边界。然后,该算法通过将此范围除以每个 channel 的 bin 数来计算 bin 边界。

我认为,根据我目前提供给您的所有信息,您应该能够弄清楚如何将您的 Python 代码片段重写为 C++ 代码。 :)

关于python - Python 方法的 OpenCV C++ 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398442/

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