FindFundamentalMat failing to find a Fundamental Mat

I’m coding a SFM project, and currently am using the FindFundamentalMat function to generate the fundamental matrix of pairs of image views. There are a high number of matches between each pair going into the function (about 40-50), and the InputArrays are of the same length. However, in every case (aka every pair between about 50 images) the fundamental mat fails to be found.

Below is the code I am using (it is in C# for unity, I am using a weird version of OpenCV as in OpenCV plus Unity).
The function receives the index of each image in the pair (in the image list) and the list of DMatches belonging to the pair.

private bool fund_est(int imgInd1, int imgInd2, List<DMatch> matches, out Mat fundamentalMatrix)
    //This needs testing in full - i am not sure if it works
    //fundamentalMatrix = new Mat();

    //convert DMatch to Point2f
    List<Point2f> points1 = new List<Point2f>();
    List<Point2f> points2 = new List<Point2f>();

    foreach (DMatch match in matches)
        //Floating point fuckery im sure theres an easier way to do this but i just wanted to work
        Point2f p1 = keyPoints[imgInd1][match.QueryIdx].Pt;
        Point2f p2 = keyPoints[imgInd2][match.ImgIdx].Pt;
        float r1x = (float)Math.Round(p1.X, 2);
        float r2x = (float)Math.Round(p2.X, 2);
        float r1y = (float)Math.Round(p1.Y, 2);
        float r2y = (float)Math.Round(p2.Y, 2);

        Point2f rp1 = new Point2f(r1x, r1y);
        Point2f rp2 = new Point2f(r2x, r2y);

    //Debug.Log($"Pair {imgInd1}:{imgInd2}:  Point 1 count is {points1.Count} and point 2 count is {points2.Count}");
    if (points1.Count == 0)
        Debug.Log("there were no points :D");
        fundamentalMatrix = Mat.Zeros(3, 3, MatType.CV_32FC1);
        return false;

    InputArray IaPoints1 = InputArray.Create(points1);
    InputArray IaPoints2 = InputArray.Create(points2);

    //get fund matrix - need to add outliers back here
    //This does not work
    fundamentalMatrix = Cv2.FindFundamentalMat(IaPoints1, IaPoints2, FundamentalMatMethod.Ransac, 3.0, 0.1);

    //Lots of time returns empty lmao. should probably pop the pair in this case
    if (fundamentalMatrix.Empty())
        fundamentalMatrix = Mat.Zeros(3, 3, MatType.CV_32FC1);
        //Debug.Log("It was empty again!");
        return false;
    return true;

I would really appreciate some help as this is impeding my project significantly and there is a hard time limit!