我开发了一些代码来提取具有几个小斑点(如模糊点)的二进制图像的质心。代码是C ++,我一直在使用OpenCV的ffmpeg -f image2 -loop 1 -framerate 1 -i bg.png \
-vf "realtime" \
-f flv rtmp://server.dev:1935/live/mystream
例程,如下所示
findContours
问题是vector<vector<cv::Point> > contours;
cv::findContours(src, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE);
cv::Moments M1;
vector<cv::Point2f> dots(contours.size());
for (int i = 0; i < contours.size(); i++)
{
M1 = cv::moments(contours[i], true);
dots[i] = cv::Point2f(float(M1.m10/M1.m00), float(M1.m01/M1.m00));
}
无法合成到FPGA中,所以我必须采用不同的方法。我认为在blob大小为1像素的情况下,类似于侵蚀会停止,但我很难想出一种避免findContours
的算法。有什么想法吗?