用 OpenCVSharp 4.5 跑一遍 OpenCV 官方教程
原 OpenCV 官方教程链接:OpenCV: Basic concepts of the homography explained with code (Demo3)
using System;
using System.Collections.Generic;
using OpenCvSharp;
namespace ConsoleApp1
{
class tutorial56 : ITutorial
{
enum Pattern { CHESSBOARD, CIRCLES_GRID, ASYMMETRIC_CIRCLES_GRID };
private void calcChessboardCorners(Size boardSize, float squareSize, out Point3f[] corners, Pattern patternType = Pattern.CHESSBOARD)
{
//corners.resize(0);
List<Point3f> corner_list = new List<Point3f>();
corners = new Point3f[boardSize.Width * boardSize.Height];
switch (patternType)
{
case Pattern.CHESSBOARD:
case Pattern.CIRCLES_GRID:
for (int i = 0; i < boardSize.Height; i++)
for (int j = 0; j < boardSize.Width; j++)
corner_list.Add(new Point3f((float)(j * squareSize), (float)(i * squareSize), 0));
break;
case Pattern.ASYMMETRIC_CIRCLES_GRID:
for (int i = 0; i < boardSize.Height; i++)
for (int j = 0; j < boardSize.Width; j++)
corner_list.Add(new Point3f((float)((2 * j + i % 2) * squareSize), (float)(i * squareSize), 0));
break;
default:
Console.WriteLine("Unknown pattern type\n");
break;
}
corners = corner_list.ToArray();
}
//! [compute-homography]
private Mat computeHomography(Mat R_1to2, Mat tvec_1to2, double d_inv, Mat norma

该代码示例展示了如何使用OpenCVSharp4.5实现OpenCV官方教程中的棋盘格homography计算。通过FindChessboardCorners找到图像中的棋盘格角点,然后利用SolvePnP计算相机姿态,进一步计算两个相机间的相对位姿,从而求得homography矩阵。最后,使用这个homography矩阵对图像进行透视变换。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



