此图说明了在 Stitcher 类中实现的拼接模块流水线。使用该类可以配置/删除某些步骤,例如根据特定需要调整拼接流水线。流水线中的所有构建块都可以在 detail 命名空间中使用,可以单独组合和使用它们。
实现的拼接流水线与 [41] 中提出的流水线非常相似。
拼接流水线
相机模型
目前在拼接流水线中实现了两种相机模型。
单应性模型对于创建由相机拍摄的照片全景图很有用,而基于仿射的模型可用于拼接由专用设备拍摄的扫描和物体。使用 cv::Stitcher::create 获取针对其中一个模型的预配置流水线。
- 注意
- 某些 cv::Stitcher 的详细设置可能没有意义。特别是,不应该混合实现仿射模型的类和实现单应性模型的类,因为它们使用不同的变换。
|
| cv::detail::GraphEdge::GraphEdge (int from, int to, float weight) |
|
Ptr< Stitcher > | cv::createStitcher (bool try_use_gpu=false) |
|
Ptr< Stitcher > | cv::createStitcherScans (bool try_use_gpu=false) |
|
bool | cv::detail::overlapRoi (Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi) |
|
Rect | cv::detail::resultRoi (const std::vector< Point > &corners, const std::vector< Size > &sizes) |
|
Rect | cv::detail::resultRoi (const std::vector< Point > &corners, const std::vector< UMat > &images) |
|
Rect | cv::detail::resultRoiIntersection (const std::vector< Point > &corners, const std::vector< Size > &sizes) |
|
Point | cv::detail::resultTl (const std::vector< Point > &corners) |
|
void | cv::detail::selectRandomSubset (int count, int size, std::vector< int > &subset) |
|
int & | cv::detail::stitchingLogLevel () |
|
◆ GraphEdge()
cv::detail::GraphEdge::GraphEdge |
( |
int |
from, |
|
|
int |
to, |
|
|
float |
weight |
|
) |
| |
|
inline |
◆ createStitcher()
Ptr< Stitcher > cv::createStitcher |
( |
bool |
try_use_gpu = false | ) |
|
◆ createStitcherScans()
Ptr< Stitcher > cv::createStitcherScans |
( |
bool |
try_use_gpu = false | ) |
|
◆ overlapRoi()
Python |
---|
| cv.detail.overlapRoi( | tl1, tl2, sz1, sz2, roi | ) -> | retval |
◆ resultRoi() [1/2]
Rect cv::detail::resultRoi |
( |
const std::vector< Point > & |
corners, |
|
|
const std::vector< Size > & |
sizes |
|
) |
| |
Python |
---|
| cv.detail.resultRoi( | corners, images | ) -> | retval |
| cv.detail.resultRoi( | corners, sizes | ) -> | retval |
◆ resultRoi() [2/2]
Rect cv::detail::resultRoi |
( |
const std::vector< Point > & |
corners, |
|
|
const std::vector< UMat > & |
images |
|
) |
| |
Python |
---|
| cv.detail.resultRoi( | corners, images | ) -> | retval |
| cv.detail.resultRoi( | corners, sizes | ) -> | retval |
◆ resultRoiIntersection()
Rect cv::detail::resultRoiIntersection |
( |
const std::vector< Point > & |
corners, |
|
|
const std::vector< Size > & |
sizes |
|
) |
| |
Python |
---|
| cv.detail.resultRoiIntersection( | corners, sizes | ) -> | retval |
◆ resultTl()
Point cv::detail::resultTl |
( |
const std::vector< Point > & |
corners | ) |
|
Python |
---|
| cv.detail.resultTl( | corners | ) -> | retval |
◆ selectRandomSubset()
void cv::detail::selectRandomSubset |
( |
int |
count, |
|
|
int |
size, |
|
|
std::vector< int > & |
subset |
|
) |
| |
Python |
---|
| cv.detail.selectRandomSubset( | count, size, subset | ) -> | None |
◆ stitchingLogLevel()
int & cv::detail::stitchingLogLevel |
( |
| ) |
|
Python |
---|
| cv.detail.stitchingLogLevel( | | ) -> | retval |