func init // adds using namespace sys.add_use('Emgu.CV') sys.add_use('Emgu.CV.Structure') // adds assembly sys.add_assembly('Emgu.CV', 'Emgu.CV.dll', 'assembly\\Emgu\\2.0.0\\') sys.add_assembly('Emgu.Util', 'Emgu.Util.dll', 'assembly\\Emgu\\2.0.0\\') // initialize instance params = this.props('Constructor').value if(params == 'None') sys.add_var(this.name, 'HaarCascade') elseif(params == 'Constructor') sys.add_object(this.codename, 'HaarCascade', sys.get_typed_field("", 'FileName', 2)) end // initialize properties if(platform_target != 'x86') warning(this.name + ' - change property «Platform» to «x86»') end // makes implementation of methods as properties sys._mtd_as_prop_init('HaarCascade') end func doConstructor(data) blk.println(this.codename, ' = new HaarCascade(', d("FileName"), ');') end func doDetect(data) this.make_code(data, '') end func doDetect2(data) this.make_code(data, ', ' + d("ScaleFactor", 7, '1.1') + ', ' + d("MinNeighbors", 1, '3') + ', ' + this.make_flags(data) + ', ' + d("MinSize", 20, 'new Size(nextFrame.Width / 8, nextFrame.Height / 8)')) end func make_code(data, args) blk.println('using (Image nextFrame = ', d("Image"), ') {').inc() .println('if (nextFrame != null) {').inc() .println('Image grayframe = nextFrame.Convert();') .println('grayframe._EqualizeHist();') .println('var faces = grayframe.DetectHaarCascade(', this.codename, args, ')[0];') .println('foreach (var face in faces)').inc() .println('nextFrame.Draw(face.rect, new Bgr(0, double.MaxValue, 0), 3);').dec() event("onDetect", 'nextFrame.ToBitmap()') blk.dec().println('}') blk.dec().println('}') end func make_flags(data) if(linked("Flags")) flg = d("Flags") else a = this.props("Flags").value flg = '0' + ((a _and_ 1) ? '|Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DEFAULT' : '') + ((a _and_ 2) ? '|Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING' : '') + ((a _and_ 4) ? '|Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.SCALE_IMAGE' : '') + ((a _and_ 8) ? '|Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.FIND_BIGGEST_OBJECT' : '') + ((a _and_ 16) ? '|Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_ROUGH_SEARCH' : '') end return(flg) end