calcHist方法 - 无效参数

时间:2014-02-27 05:25:23

标签: android opencv android-ndk

我试图在图像中找到直方图,我正在尝试使用下面的calcHist方法

calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );

我正在尝试example from this link. 我一直遇到这个错误而且我无法编译代码

"Invalid arguments ' Candidates are: void calcHist(const cv::Mat *, int, const int *, const cv::_InputArray &, cv::SparseMat &, int, const int *, const float * *, bool, bool) void calcHist(const cv::Mat *, int, const int *, const cv::_InputArray &, const cv::_OutputArray &, int, const int *, const float * *, bool, bool) void calcHist(const cv::_InputArray &, const std::vector<int,std::allocator<int>> &, const cv::_InputArray &, const cv::_OutputArray &, const std::vector<int,std::allocator<int>> &, const std::vector<float,std::allocator<float>> &, bool) '"

我已经使用所需的包含

配置了我的构建C / C ++构建路径

我正在使用32位系统并为Windows 32位系统设置了适当的NDK。当我在64位系统上运行时,该方法编译没有任何问题!

从早上开始真的很开心。有人请帮忙!

Mat imagMat=cvLoadImageM("/sdcard/ImageProcessing/TestImage.png");
LOGD("Number Of Rows = %d",imagMat.rows);

/// Separate the image in 3 places ( B, G and R )
vector<Mat> bgr_planes;
split( imagMat, bgr_planes );

/// Establish the number of bins
int histSize = 256;

/// Set the ranges ( for B,G,R) )
float range[] = { 0, 256 } ;
const float* histRange = { range };

bool uniform = true;

bool accumulate = false;

Mat b_hist, g_hist, r_hist;

const int* channel=0;

calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );

先谢谢。

NSM

1 个答案:

答案 0 :(得分:0)

我只能建议尝试将histSize作为int的数组而不是int。我知道你只有一架飞机,但我认为这个电话真正期待一个阵列 - 每架飞机一个。尝试创建一个长度为1的数组,其中256为唯一元素。