1

これら 2 つのリンクで同じ問題が発生しています: onetwo。画像内の小さな ROI でピクセル強度の平均を計算する必要があります。

ROI を選択し、そこに画像をコピーしたので、すべてのピクセルのループを回避して、ピクセルの平均強度を計算する必要があります。

リンクで提供されている回答は使用することを示唆していますCvScalar c = cvAvg(img);が、C++ インターフェイスを使用して同等のものを見つけることができません。

私にそれを指摘してもらえますか?ドキュメントで見つけられませんでした!

4

2 に答える 2

15

問題を解決するコード スニペットを提供します。

//defines roi
cv::Rect roi( roiVertexXCoordinate, roiVertexYCoordinate, roiWidth, roiHeight );

//copies input image in roi
cv::Mat image_roi = inputImage( roi );

//computes mean over roi
cv::Scalar avgPixelIntensity = cv::mean( image_roi );

//prints out only .val[0] since image was grayscale
cout << "Pixel intensity over ROI = " << avgPixelIntensity.val[0] << endl;
于 2012-06-09T10:19:40.380 に答える
8

mean functionC++ に使用します。

http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=avg#mean

Calculates an average (mean) of array elements.

C++: Scalar mean(InputArray src, InputArray mask=noArray())

Python: cv2.mean(src[, mask]) → retval 

C: CvScalar cvAvg(const CvArr* arr,const CvArr* mask=NULL ) 

Python: cv.Avg(arr, mask=None) → scalar
于 2012-06-09T09:53:25.497 に答える