0

Hi I'm writing a C# program based of a VB program to recognize text in images. However, I can't seem to be able to figure out the C# equivalent of this line:

listOfContoursWithData.Sort(Function(oneContourWithData, otherContourWithData) oneContourWithData.boundingRect.X.CompareTo(otherContourWithData.boundingRect.X))

This is the ContourWithData class which listOfContoursWithData is an instance of:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Emgu.CV.Util;

namespace TrainAndTest
{
    public class ContourWithData
    {
        const int MIN_CONTOUR_AREA = 100;

        public VectorOfPoint contour;    // contour
        public System.Drawing.Rectangle boundingRect;    // bounding rect for contour
        public double dblArea;   // area of contour

        public bool checkIfContourIsValid(){
        if ((dblArea < MIN_CONTOUR_AREA))
            return false;
        else
            return true;
    }
}

1 Answers1

2

You can use a lambda expression:

listOfContoursWithData.Sort((oneContourWithData, otherContourWithData) => 
                                oneContourWithData.boundingRect.X.CompareTo(otherContourWithData.boundingRect.X));

The List<ContourWithData>.Sort() method takes a Comparison<ContourWithData> as parameter. This is a delegate taking two ContourWithData instances as input and returns an int.

René Vogt
  • 43,056
  • 14
  • 77
  • 99