Итак, моя проблема:
Я пытаюсь загрузить свой графический процессор с поддержкой OpenCV OpenCL, но, к сожалению, он вообще не работает.
Я не могу понять, что не таквыиграть мой код.
PS: Мой OpenCV собран с поддержкой CMAKE, CUDA и OpenCL.
ocl::setUseOpenCL(true);
cv::ocl::haveOpenCL();
VideoCapture cap;
cap.open(0);
UMat frame;
UMat gray;
for (;;)
{
cap >> frame;
cvtColor(frame, frame, COLOR_RGB2BGR);
cvtColor(frame, gray, COLOR_RGB2GRAY);
medianBlur(gray, gray, 5);
vector<Vec3f> circles;
HoughCircles(gray, circles, HOUGH_GRADIENT, 1,
gray.rows / 8, // change this value to detect circles with different distances to each other
100, 20, 25, 50 // change the last two parameters
// (min_radius & max_radius) to detect larger circles
);
for (size_t i = 0; i < circles.size(); i++)
{
Vec3i c = circles[i];
Point center = Point(c[0], c[1]);
// circle center
circle(frame, center, 1, Scalar(0, 100, 100), 3, LINE_AA);
// circle outline
int radius = c[2];
circle(frame, center, radius, Scalar(0, 0, 255), 3, LINE_AA);
}
if (frame.empty()) break; // end of video stream
imshow("this is you, smile! :)", frame);
if (waitKey(10) == 27) break; // stop capturing by pressing ESC
}
Ожидается, что моя загрузка графического процессора будет больше, чем обычно, но это не так (обычно 4-5%)