9
有谁知道Opencv是否提供了一个函数来检查一个cv :: Point是否在cv :: Mat内?检查一个cv :: Point是否在一个cv :: Mat内
基本上我做:
int x = (current.x - offset);
int y = current.y;
if (x >= 0 && y >= 0 && x < mat.cols && y < mat.rows) && ((int)mat.at<uchar>(y, x) == 0)){
return cv::Point(x, y);
}
}
我想知道如果有什么快?或者如果这样做不好呢?
就像你说的这是一个循环过程,这就是为什么我正在寻找最佳实践。你不觉得创建cv :: Rect有点沉重吗? – Poko
我假设你对相同的图像做了几次检查,因此应该创建一个单一的矩形。如果不是,它可能比你的初始样本稍慢。如果你想要比4个简单的就地检查更有效的东西,需要更多的上下文。在这种情况下,由CPU完成分支预测和推测。 – Mikhail
@Mikhail只有当OpenCV以调试模式构建时,'at'方法才会抛出范围异常。 “[为了提高性能,索引范围检查仅在Debug配置中执行](http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-at)” – Antonio