Golang在圖像中繪制矩形框的示例代碼
Golang 在圖像中繪制矩形框
從獲取的坐標(biāo)信息,在圖像中繪制矩形框,并添加標(biāo)注信息。
1. 依賴
- 字體 simsun.ttc
- 第三方庫 github.com/fogleman/gg
2. 源碼
package main
import (
"encoding/json"
"fmt"
"image"
"image/color"
"image/draw"
"log"
"math"
"reflect"
"strings"
"github.com/fogleman/gg"
)
// test_draw_rect_text 畫圖像矩形, 標(biāo)注, 顏色; 返回保存圖像路徑
// ref: https://github.com/fogleman/gg/blob/master/examples/rotated-image.go
func test_draw_rect_text(im_path, font_path, detect_label, save_path string, x, y, w, h float64) {
// Load image
im, err := gg.LoadImage(im_path)
if err != nil {
log.Fatal(err)
}
// 1 method
// iw, ih := im.Bounds().Dx(), im.Bounds().Dy()
// Set Context
// dc := gg.NewContext(iw, ih)
// Draw image
// dc.DrawImage(im, 0, 0)
// 2 method
dc := gg.NewContextForImage(im)
// Set color and line width
dc.SetHexColor("#FF0000")
dc.SetLineWidth(1)
// Draw rectangle
dc.DrawRoundedRectangle(x, y, w, h, 0)
// Store set
dc.Stroke()
// Set font and draw label
var font_height float64 = 7
if err := dc.LoadFontFace(font_path, font_height); err != nil {
panic(err)
}
rect_center_x := x + w/2
rect_center_y := y + h/2
dc.DrawStringAnchored(detect_label, rect_center_x, rect_center_y, 0.5, 0.5)
dc.Clip()
// Save png image
dc.SavePNG(save_path)
}
func main() {
im_path := "/home/tianzx/Pictures/lena.jpeg"
font_path := "/home/tianzx/ai_model/simsun.ttc"
detect_label := "缺角/碎裂"
save_path := "/home/tianzx/Pictures/lena_test.png"
var x, y, w, h float64 = 50, 100, 50, 50
test_draw_rect_text(im_path, font_path, detect_label, save_path, x, y, w, h)
}
3. 結(jié)果


4. 說明
導(dǎo)入的Golang第三方庫,并不是都使用了,按需進(jìn)行刪減。
到此這篇關(guān)于Golang在圖像中繪制矩形框的示例代碼的文章就介紹到這了,更多相關(guān)Golang繪制矩形框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
gorm 結(jié)構(gòu)體中 binding 和 msg 結(jié)構(gòu)體標(biāo)簽示例詳解
文章介紹了Gin框架中binding和msg結(jié)構(gòu)體標(biāo)簽的使用,包括基本用法、常用驗(yàn)證規(guī)則、自定義驗(yàn)證器、錯(cuò)誤信息自定義、控制器使用示例、組合驗(yàn)證規(guī)則、跨字段驗(yàn)證和初始化驗(yàn)證器等,這些標(biāo)簽主要用于數(shù)據(jù)驗(yàn)證、自定義錯(cuò)誤信息、參數(shù)綁定和表單驗(yàn)證2024-11-11
Golang基于JWT與Casbin身份驗(yàn)證授權(quán)實(shí)例詳解
這篇文章主要為大家介紹了Golang基于JWT與Casbin實(shí)現(xiàn)身份驗(yàn)證授權(quán)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
???????Golang實(shí)現(xiàn)RabbitMQ中死信隊(duì)列幾種情況
本文主要介紹了???????Golang實(shí)現(xiàn)RabbitMQ中死信隊(duì)列幾種情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Go網(wǎng)絡(luò)編程TCP抓包實(shí)操示例探究
作為一名軟件開發(fā)者,網(wǎng)絡(luò)編程是必備知識(shí),本文通過?Go?語言實(shí)現(xiàn)?TCP?套接字編程,并結(jié)合?tcpdump?工具,展示它的三次握手、數(shù)據(jù)傳輸以及四次揮手的過程,幫助讀者更好地理解?TCP?協(xié)議與?Go?網(wǎng)絡(luò)編程2024-01-01
Go通過goroutine實(shí)現(xiàn)多協(xié)程文件上傳的基本流程
多協(xié)程文件上傳是指利用多線程或多協(xié)程技術(shù),同時(shí)上傳一個(gè)或多個(gè)文件,以提高上傳效率和速度,本文給大家介紹了Go通過goroutine實(shí)現(xiàn)多協(xié)程文件上傳的基本流程,需要的朋友可以參考下2024-05-05
一文理解Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn)
本文主要介紹了Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Go結(jié)構(gòu)體從基礎(chǔ)到應(yīng)用深度探索
本文深入探討了結(jié)構(gòu)體的定義、類型、字面量表示和使用方法,旨在為讀者呈現(xiàn)Go結(jié)構(gòu)體的全面視角,通過結(jié)構(gòu)體,開發(fā)者可以實(shí)現(xiàn)更加模塊化、高效的代碼設(shè)計(jì),這篇文章旨在為您提供關(guān)于結(jié)構(gòu)體的深入理解,助您更好地利用Go語言的強(qiáng)大功能2023-10-10
Go調(diào)度器學(xué)習(xí)之系統(tǒng)調(diào)用詳解
這篇文章腫,將以一個(gè)簡(jiǎn)單的文件打開的系統(tǒng)調(diào)用,來分析一下Go調(diào)度器在系統(tǒng)調(diào)用時(shí)做了什么。文中的示例代碼講解詳細(xì),需要的可以參考一下2023-04-04

