Example #1
0
func Guess(link string) {
	img := captcha.LoadImage(link)
	/*
		decoder := &captcha.Decoder{
			ImageProcessors: []cv.ImageProcessor {
					&cv.MeanShift{K:1},
				},
			BiColorProcessor: &cv.PeakAverageBasedBiColor{},
			BinaryImageProcessors: []cv.BinaryImageProcessor{
				&cv.RemoveBinaryImageBorder{},
				&cv.RemoveIsolatePoints{},
				&cv.BoundBinaryImage{XMinOpen: 2, YMinOpen : 5},
				&cv.RemoveXAxis{K : 2},
				&cv.ScaleBinaryImage{Height : captcha.SCALE_HEIGHT},
			},
			BinaryImagePredictor: &captcha.BinaryImageConnectedComponentPredictor{Dx : 1, Dy : 1},
		}
	*/
	decoder := &captcha.Decoder{
		BiColorProcessor: &cv.PeakAverageBasedBiColor{},
		BinaryImageProcessors: []cv.BinaryImageProcessor{
			&cv.RemoveBinaryImageBorder{},
			&cv.RemoveIsolatePoints{},
			//&cv.Thining{},
			&cv.BoundBinaryImage{XMinOpen: 0, YMinOpen: 0},
			//&cv.RemoveXAxis{K : 1},
			&cv.ScaleBinaryImage{Height: captcha.SCALE_HEIGHT},
		},
		BinaryImagePredictor: &captcha.FastCutBasedPredictor{},
	}

	masks := captcha.LoadMasks("./masks")
	results := decoder.Predict(img, masks, captcha.NUMBER)

}
Example #2
0
func TestAll(folder string) {
	imgs := captcha.LoadTestImages(folder)
	log.Println("test images", len(imgs))
	masks := captcha.LoadMasks("./masks")
	hit := 0.0
	total := 0.0
	for _, img := range imgs {
		predictor := captcha.NewMetaPredictor()
		log.Println(img.Path)
		ok := false
		for {
			copyImg := captcha.CopyImage(img.Img)
			results := predictor.Predict(copyImg, masks, img.ChType)
			if results == nil {
				break
			}
			for _, result := range results {
				log.Println(">>>>>>>>>", result.Label, img.Label)
				if result.Label == img.Label {
					log.Println("--------- ok")
					hit += 1.0
					ok = true
					break
				}
			}
			if ok {
				break
			}
		}
		if !ok {
			captcha.SaveImage(img.Img, "./failed/"+img.Label)
		}
		total += 1.0
		fmt.Println()
	}
	log.Println("hit ratio", hit/total)
}