나는 intensity equalization을 위해 안드로이드에서이 opencv 코드를 사용하고 있습니다. 실행 시간은 프레임 당 약 300ms (720x480)입니다. 누구든지 가능한 시간 최적화에 대한 아이디어가 있습니까?Opencv 안드로이드 코드 최적화
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