我正在寻找一种测量openCV FPS的正确方法.我找到了几种方法.但它们都不适合我.
我测试过的第一个使用time_t start和time_t end.一旦它返回一个转储函数作为fps x时间图(我真的无法想象fps图如何成为转储函数),我认为一个是错误的.
这是这个情节的形象.

我测试的第二个使用t =(double)cvGetTickCount()来测量fps.一旦它返回120 fps,这种方式是错误的,但是,对于30秒长度,以120 fps捕获的视频不应该花费超过1分钟来处理.所以这是衡量FPS的错误方法.
有人知道在openCV中测量FPS的另一种方法吗?
PS.我正试图在视频的每一帧中找到圆圈.视频帧尺寸为320x240像素.
更新2 我正在尝试测量FPS的代码.
for(;;){
clock_t start=CLOCK();
Mat frame, finalFrame;
capture >> frame;
finalFrame = frame;
cvtColor(frame, frame, CV_BGR2GRAY);
GaussianBlur(frame, frame, Size(7,7), 1.5, 1.5);
threshold(frame, frame, 20, 255, CV_THRESH_BINARY);
dilate(frame, frame, Mat(), Point(-1, -1), 2, 1, 1);
erode(frame, frame, Mat(), Point(-1, -1), 2, 1, 1);
Canny(frame, frame, 20, 20*2, 3 );
vector<Vec3f> circles;
findContours(frame,_contours,_storage,CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE );
vector<vector<Point> > contours_poly( _contours.size() );
vector<Rect> boundRect( _contours.size() );
vector<Point2f>center( …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenCV检测与圆形相似的对象HoughCircles.问题是:HoughCircles在某些情况下无法检测到此类对象.
有没有人知道任何替代方法来检测像这些圆圈类似的对象?
更新

更新
Hello Folks我正在添加一个检测方法结果的gif.

使用gif更容易解释问题.我想要删除的不良效果是圆圈大小变化.即使对于像右边那样的静态形状,左边的结果也是不精确的.有谁知道解决方案吗?
更新
我需要的所有东西都是它的直径.我用它完成了findContours.现在,findContours当使用openCV和OpenMP时,我无法使用它.有没有人知道findContours的快速替代品?
更新
我用来检测这些形状的代码.
for (int j=0; j<=NUM_THREADS-1;j++)
{
capture >> frame[j];
}
#pragma omp parallel shared(frame,processOutput,circles,diameterArray,diameter)
{
int n=omp_get_thread_num();
cvtColor( frame[n], processOutput[n], CV_BGR2GRAY);
GaussianBlur(processOutput[n], processOutput[n], Size(9, 9), 2, 2);
threshold(processOutput[n], processOutput[n], 21, 250, CV_THRESH_BINARY);
dilate(processOutput[n], processOutput[n], Mat(), Point(-1, -1), 2, 1, 1);
erode(processOutput[n], processOutput[n], Mat(), Point(-1, -1), 2, 1, 1);
Canny(processOutput[n], processOutput[n], 20, 20*2, 3 );
HoughCircles( processOutput[n],circles[n], CV_HOUGH_GRADIENT, 1, frame[n].rows/8, 100,21, 50, 100); …Run Code Online (Sandbox Code Playgroud) 我真的想知道使用 OpenCV 是否setNumThreads();真的允许我的代码并行运行。我在互联网上搜索了很多,但没有找到我的问题的任何答案。
有人对我的问题有答案吗?
我正在使用openCV GPU处理120 fps的视频文件.我的问题是:我可以以相同的帧速率显示处理过的图像吗?当我使用imshow显示图像时,fps降低到20~30.我可以更快地显示这些图像(最高120 fps)吗?
谢谢