Skip to content

Commit d9257ec

Browse files
committed
change DrawTrack method
1 parent 360d101 commit d9257ec

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

v2/blob/blob.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type Blobie interface {
2727
PredictNextPosition(n int)
2828
Update(newb Blobie) error
2929
SetDraw(drawOptions *DrawOptions)
30-
DrawTrack(mat *gocv.Mat, optionalText string)
30+
DrawTrack(mat *gocv.Mat, optionalText ...string)
3131
IsCrossedTheLine(vertical, leftX, rightX int, direction bool) bool
3232
IsCrossedTheLineWithShift(vertical, leftX, rightX int, direction bool, shift int) bool
3333
IsCrossedTheObliqueLine(leftX, leftY, rightX, rightY int, direction bool) bool

v2/blob/kalman_blob.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func (b *KalmanBlobie) SetDraw(drawOptions *DrawOptions) {
219219
}
220220

221221
// DrawTrack Draws blob's track [KalmanBlobie]
222-
func (b *KalmanBlobie) DrawTrack(mat *gocv.Mat, optionalText string) {
222+
func (b *KalmanBlobie) DrawTrack(mat *gocv.Mat, optionalText ...string) {
223223
if b.drawingOptions == nil {
224224
b.drawingOptions = NewDrawOptionsDefault()
225225
}
@@ -228,12 +228,16 @@ func (b *KalmanBlobie) DrawTrack(mat *gocv.Mat, optionalText string) {
228228
for i := range b.Track {
229229
gocv.Circle(mat, b.Track[i], b.drawingOptions.CentroidColor.Radius, b.drawingOptions.CentroidColor.Color, b.drawingOptions.CentroidColor.Thickness)
230230
}
231-
if optionalText != "" {
232-
pt := image.Pt(b.CurrentRect.Min.X, b.CurrentRect.Min.Y)
233-
textSize := gocv.GetTextSize(optionalText, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Thickness)
234-
textRect := image.Rectangle{Min: image.Point{X: pt.X, Y: pt.Y - textSize.Y}, Max: image.Point{X: pt.X + textSize.X, Y: pt.Y}}
235-
gocv.Rectangle(mat, textRect, b.drawingOptions.BBoxColor.Color, b.drawingOptions.BBoxColor.Thickness)
236-
gocv.PutText(mat, optionalText, pt, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Color, b.drawingOptions.TextColor.Thickness)
231+
shiftTextY := 10
232+
for i := len(optionalText) - 1; i >= 0; i-- {
233+
text := optionalText[i]
234+
if text != "" {
235+
anchor := image.Pt(b.CurrentRect.Min.X, b.CurrentRect.Min.Y-i*shiftTextY)
236+
textSize := gocv.GetTextSize(text, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Thickness)
237+
textRect := image.Rectangle{Min: image.Point{X: anchor.X, Y: anchor.Y - textSize.Y}, Max: image.Point{X: anchor.X + textSize.X, Y: anchor.Y}}
238+
gocv.Rectangle(mat, textRect, b.drawingOptions.BBoxColor.Color, b.drawingOptions.BBoxColor.Thickness)
239+
gocv.PutText(mat, text, anchor, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Color, b.drawingOptions.TextColor.Thickness)
240+
}
237241
}
238242
}
239243
}

v2/blob/simple_blob.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func (b *SimpleBlobie) SetDraw(drawOptions *DrawOptions) {
207207
}
208208

209209
// DrawTrack Draws blob's track [SimpleBlobie]
210-
func (b *SimpleBlobie) DrawTrack(mat *gocv.Mat, optionalText string) {
210+
func (b *SimpleBlobie) DrawTrack(mat *gocv.Mat, optionalText ...string) {
211211
if b.drawingOptions == nil {
212212
b.drawingOptions = NewDrawOptionsDefault()
213213
}
@@ -216,12 +216,16 @@ func (b *SimpleBlobie) DrawTrack(mat *gocv.Mat, optionalText string) {
216216
for i := range b.Track {
217217
gocv.Circle(mat, b.Track[i], b.drawingOptions.CentroidColor.Radius, b.drawingOptions.CentroidColor.Color, b.drawingOptions.CentroidColor.Thickness)
218218
}
219-
if optionalText != "" {
220-
pt := image.Pt(b.CurrentRect.Min.X, b.CurrentRect.Min.Y)
221-
textSize := gocv.GetTextSize(optionalText, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Thickness)
222-
textRect := image.Rectangle{Min: image.Point{X: pt.X, Y: pt.Y - textSize.Y}, Max: image.Point{X: pt.X + textSize.X, Y: pt.Y}}
223-
gocv.Rectangle(mat, textRect, b.drawingOptions.BBoxColor.Color, b.drawingOptions.BBoxColor.Thickness)
224-
gocv.PutText(mat, optionalText, pt, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Color, b.drawingOptions.TextColor.Thickness)
219+
shiftTextY := 10
220+
for i := len(optionalText) - 1; i >= 0; i-- {
221+
text := optionalText[i]
222+
if text != "" {
223+
anchor := image.Pt(b.CurrentRect.Min.X, b.CurrentRect.Min.Y-i*shiftTextY)
224+
textSize := gocv.GetTextSize(text, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Thickness)
225+
textRect := image.Rectangle{Min: image.Point{X: anchor.X, Y: anchor.Y - textSize.Y}, Max: image.Point{X: anchor.X + textSize.X, Y: anchor.Y}}
226+
gocv.Rectangle(mat, textRect, b.drawingOptions.BBoxColor.Color, b.drawingOptions.BBoxColor.Thickness)
227+
gocv.PutText(mat, text, anchor, b.drawingOptions.TextColor.Font, b.drawingOptions.TextColor.Scale, b.drawingOptions.TextColor.Color, b.drawingOptions.TextColor.Thickness)
228+
}
225229
}
226230
}
227231
}

0 commit comments

Comments
 (0)