次のコードを使用しようとしています。
cv::MatND hist;
cv::Mat image = cv::imread("image.bmp");
float *range = new float[33];
int histSize = 32;
int channel = 0;
for (int i = 0; i < 33; ++i)
range[i] = (float)6602.0 + 21*i;
float **ranges = ⦥
cv::calcHist(&frame.get<0>(), 1, &channel, cv::Mat(), hist, 1, &histSize, ranges, false, false);
画像はグレースケールなので、ゼロ番目のチャネルを使用してヒストグラムを取得しています。範囲が均一であることはわかっていますが、境界を正確に知りたいと思っていました。画像は CV_16U タイプです (元のコードでは、画像はカメラですが、ここに含めるには長すぎます)
私の問題は、コンパイル時に次のエラーが発生することです。
error C2665: 'cv::calcHist' : none of the 3 overloads could convert all the argument types
C:\opencv\build_x64\include\opencv2/imgproc/imgproc.hpp(670): could be 'void cv::calcHist(const cv::Mat *,int,const int *,cv::InputArray,cv::OutputArray,int,const int *,const float **,bool,bool)'
C:\opencv\build_x64\include\opencv2/imgproc/imgproc.hpp(676): or 'void cv::calcHist(const cv::Mat *,int,const int *,cv::InputArray,cv::SparseMat &,int,const int *,const float **,bool,bool)'
while trying to match the argument list '(cv::Mat *, int, int *, cv::Mat, cv::MatND, int, int *, float **, bool, bool)'
私はそれがばかげていることを知っていますが、私は夢中になろうとしています. どんな助けでも大歓迎です。PS: 64 ビット環境の Microsoft Visual C++ Express で opencv 2.4.2 を使用しています。
一番、
バリス