发布一个go的工具包到github

一、开发主要步骤

  • 1、在github上新建一个公开的项目,比如我创建一个generate-model的工程

  • 2、将工程克隆到本地来

  • 3、使用go mod初始化项目


go mod init github.com/kuangshp/generate-model

  • 4、初始化后的go.mod的文件如下,如果你的module不是你github的项目地址你要修改过来

module github.com/kuangshp/generate-model

go 1.17

  • 5、在项目下创建自己的文件写入代码

.

├── README.md

├── converter

│   └── table2struct.go

├── go.mod

├── go.sum

└── utils

└── str.go

2 directories, 5 files

  • 6、添加README.md使用文档

  • 7、提交到github

二、将github上的工程转换为别人可以下载的依赖包

  • 1、本地使用git命令创建一个tag

git tag -a tag名 -m '创建一个版本'

# eg

git tag -a v1.0.0 -m '创建一个项目'

  • 2、将tag提交到github

git push origin tag名称

# eg

git push origin v1.0.0

# 一次性提交本地全部的tag

git push origin --tags

  • 3、直接在github上查看是否已经提交成功tag

    在这里插入图片描述

  • 4、查看自己发布的包

  • 5、在本地工程测试安装依赖包

  • 6、使用方式请查看github地址为的说明文档,使用方便麻烦点赞一个

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要编写一个验证码识别工具,您需要对图像处理和机器学习有一定的了解。以下是一个基本的验证码识别程序的Golang实现,它使用了SVM机器学习算法和OpenCV库来处理和识别验证码。 ```go package main import ( "fmt" "image" "image/color" "image/draw" "image/jpeg" "log" "math/rand" "os" "path/filepath" "time" "github.com/otiai10/gosseract" "gocv.io/x/gocv" ) const ( letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" width, height = 200, 80 ) func main() { rand.Seed(time.Now().UnixNano()) // 生成随机验证码 img := generateCaptcha() // 保存验证码 captchaFile, _ := os.Create("captcha.jpg") jpeg.Encode(captchaFile, img, nil) captchaFile.Close() // 识别验证码 result := recognizeCaptcha("captcha.jpg") fmt.Println(result) } // 生成随机验证码 func generateCaptcha() *image.RGBA { // 创建一个黑色背景的图像 img := image.NewRGBA(image.Rect(0, 0, width, height)) draw.Draw(img, img.Bounds(), &image.Uniform{color.Black}, image.ZP, draw.Src) // 随机生成4个字符 var lettersRunes = []rune(letters) str := make([]rune, 4) for i := range str { str[i] = lettersRunes[rand.Intn(len(lettersRunes))] } // 在图像上绘制字符 for i, r := range str { face := gocv.FontHersheyPlain size := 2.0 + rand.Float64()*4.0 thickness := 1.0 + rand.Float64()*3.0 pt := gocv.Point{X: rand.Intn(width/4) + i*50 + 20, Y: rand.Intn(height/2) + 20} gocv.PutText(img, string(r), pt, face, size, color.RGBA{R: uint8(rand.Intn(256)), G: uint8(rand.Intn(256)), B: uint8(rand.Intn(256)), A: uint8(rand.Intn(256))}, int(thickness)) } // 添加噪点 for i := 0; i < 1000; i++ { pt := gocv.Point{X: rand.Intn(width), Y: rand.Intn(height)} gocv.Circle(img, pt, 1, color.RGBA{R: uint8(rand.Intn(256)), G: uint8(rand.Intn(256)), B: uint8(rand.Intn(256)), A: uint8(rand.Intn(256))}, -1) } return img } // 识别验证码 func recognizeCaptcha(captchaFile string) string { // 读取验证码图像 img := gocv.IMRead(captchaFile, gocv.IMReadColor) defer img.Close() // 灰度化 gray := gocv.NewMat() gocv.CvtColor(img, &gray, gocv.ColorBGRToGray) // 二值化 thresh := gocv.NewMat() gocv.AdaptiveThreshold(gray, &thresh, 255, gocv.AdaptiveThresholdGaussian, gocv.ThresholdBinary, 11, 2) // 轮廓检测 contours := gocv.FindContours(thresh, gocv.RetrievalExternal, gocv.ChainApproxSimple) captcha := gocv.NewMat() defer captcha.Close() // 识别每个字符 var result string for _, cnt := range contours { // 围盒 x, y, w, h := gocv.BoundingRect(cnt) if w < 10 || h < 10 { continue } // 提取字符图像 roi := thresh.Region(image.Rectangle{Min: image.Point{X: x, Y: y}, Max: image.Point{X: x + w, Y: y + h}}) gocv.Resize(roi, &captcha, image.Point{X: 40, Y: 40}, 0, 0, gocv.InterpolationCubic) // OCR识别 captchaFile, _ := filepath.Abs("captcha_roi.jpg") gocv.IMWrite(captchaFile, captcha) client := gosseract.NewClient() client.SetImage(captchaFile) text, _ := client.Text() result += text } return result } ``` 上面的程序使用了随机生成的字符来生成验证码图像,然后使用OpenCV库和SVM机器学习算法来识别每个字符。在识别每个字符时,它使用了Tesseract OCR引擎来提高识别准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值