2012-10-02 56 views
11

Trong bảng cheat openCV (C++), tôi đã tìm thấy ma trận opration mean(). Khi tôi sử dụng nó:cách tính và sử dụng giá trị trung bình cvMat

float myMatMean = mean(MyMat); 

tôi nhận được lỗi:

no suitable conversion function from "cv::Scalar" to "float" exists

Những gì tôi có thể làm để sử dụng dữ liệu này?

+14

'bình() 'dường như được trở về một biến kiểu' cv :: Scalar' vì vậy hãy thử 'cv :: Scalar myMatMean = trung bình (MyMat);' – hmjd

+0

Tôi nghĩ nó hoạt động bằng cách sử dụng double thay vì float, nếu bạn không muốn làm phiền với Scalar. Nhưng Scalar cung cấp cho bạn ý nghĩa trên tất cả các kênh – remi

Trả lời

25

Cảm ơn.

Vấn đề là mặc dù myMat là hình ảnh 2D. Loại trả lại vẫn là một số Scalar có kích thước .

Giải pháp là

cv:Scalar tempVal = mean(myMat); 
float myMAtMean = tempVal.val[0]; 
+6

Bây giờ, chỉ cần chấp nhận câu trả lời của riêng bạn và chúng tôi hạnh phúc :) – TheBlastOne

+0

... và bỏ phiếu nhận xét của hmjd như một khoản hoàn trả cho nỗ lực này. –

+0

địa ngục, tôi sẽ làm điều đó cho bạn ... –

Các vấn đề liên quan