0
這裏是一個例子。我有一個健康欄。如果玩家擁有100%HP,他的健康狀況一直是紅色。如果他受到攻擊,部分生命條是紅色的,其餘部分是黑色的(因爲他損失了一些HP)。我在他的健康欄的地方投資回報率。我如何使用OpenCV來計算他的生活百分比?計算填充顏色在特定ROI中的百分比?
這裏是一個例子。我有一個健康欄。如果玩家擁有100%HP,他的健康狀況一直是紅色。如果他受到攻擊,部分生命條是紅色的,其餘部分是黑色的(因爲他損失了一些HP)。我在他的健康欄的地方投資回報率。我如何使用OpenCV來計算他的生活百分比?計算填充顏色在特定ROI中的百分比?
這是我得到的最終解決方案。感謝Miki
Mat testBar = src(Rec_UserBarHP);
Mat testBarHSV;
cvtColor(testBar, testBarHSV, COLOR_BGR2HSV);
Mat mask1;
inRange(testBarHSV, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
Mat mask = mask1;
int TotalPixels = testBarHSV.rows * testBarHSV.cols;
float ZeroPixels = TotalPixels - countNonZero(testBarHSV);
ostringstream str;
str << "Number of red pixels:" << ZeroPixels;
putText(src, str.str(),
Point(5, 5),
FONT_HERSHEY_COMPLEX_SMALL,
1.0,
Scalar(255, 255, 255),
1,
CV_AA);
(紅色像素數/紅色區域)* 100? – Miki
感謝您的輸入,但如何獲得僅紅色像素?我知道我可以使用mat.total()計算所有像素,但不知道如何僅對紅色像素執行此操作?我應該使用一些閾值嗎? – Jacob
是的,你可以使用'inRange',然後'countNonZero'。請參閱[這裏](http://stackoverflow.com/a/32523532/5008845)以瞭解如何啓動 – Miki