我试图在图像中找到直方图,我正在尝试使用下面的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
答案 0 :(得分:0)
我只能建议尝试将histSize作为int的数组而不是int。我知道你只有一架飞机,但我认为这个电话真正期待一个阵列 - 每架飞机一个。尝试创建一个长度为1的数组,其中256为唯一元素。