c++ - 如何仅将光流 vector 应用于检测到的圆

标签 c++ opencv image-processing feature-detection opticalflow

我正在从事交通标志检测项目。已检测到圆形交通标志,现在我只想计算交通标志的光流 vector ,而不是整个图像。 我可以找到检测到的圆的半径,但不确定如何使用它来创建圆形掩码 IplImage 以提供给 "cvGoodFeatureToTrack""cvCalcOpticalFlowPyrLK()"

有什么建议吗?

最佳答案

假设您有交通标志的中心和半径,即:

cv::Point center(200, 300);
int radius = 50;

感兴趣的区域,其中 goodFeaturesToTrack可以通过与输入图像具有相同大小的 CV_8UC1 掩码来控制:

cv::Mat mask = cv::Mat::zeros(grayFrame.size(), CV_8UC1);
cv::circle(mask, center, radius, cv::Scalar::all(255), -1);

最后根据交通标志用填充了 255 的新掩码调用函数:

cv::goodFeaturesToTrack(grayFrame, corners, 100, 0.01, 10, mask);

关于c++ - 如何仅将光流 vector 应用于检测到的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058672/

相关文章:

java - 用于圆圈识别的快速 Java 库

c++ - pthread_cond_timedwait 立即返回 ETIMEDOUT

用于开发测试的 CSS 图像引用

Javascript无损图像压缩

python - 出不来这个洞: can't use pre-learnt model's output

c++ - 移动背景减法 (OpenCV)

c++ - 如何在计算单应性后拼接两个图像

C++线程等待时间

c++ - 需要左值作为递增操作数 (2)

c++ - 堆栈问题