我在Android上使用此opencv代碼進行強度均衡。執行時間約爲每幀300ms(720x480)。有沒有人有一個可能的時間優化的想法?Opencv的代碼優化Android
下面是代碼:
cvtColor(image, hsvImage, CV_BGR2HSV);
// Get intensity
intensity = hsvImage.at<Vec3b>((int)reference.Point_::y, (int)reference.Point_::x);
float value = (float)REGULAR_INTENSITY/intensity[2];
float saturation = (float)REGULAR_SATURATION/intensity[1];
if (counter == 15 && (int)intensity[2] < REGULAR_INTENSITY) {
equalization = false;
}
// Modify intensity
float transformedSaturation, transformedValue;
for(int i = 0; i < hsvImage.rows; i++) {
unsigned char *data = hsvImage.ptr(i);
for(int j = 0; j < hsvImage.cols; j++) {
transformedSaturation = (uchar)*++data * saturation;
if (transformedSaturation > MAX_COLOR) {
transformedSaturation = MAX_COLOR;
}
*data++ = transformedSaturation;
transformedValue = (uchar)*data * value;
if (transformedValue > MAX_COLOR) {
transformedValue = MAX_COLOR;
}
*data++ = transformedValue;
}
}
cvtColor(hsvImage, image, CV_HSV2BGR);
你發現哪一段代碼消耗大部分時間?在cvtColor和主循環上花了多少時間? – james
最後一行:CV_HSV2BGR轉換。我認爲沒有什麼可以做的。 –
考慮使用gpu :: cvtColor進行顏色轉換(如果適用)。 – remi