В приложениях компьютерного зрения и обработки изображений рисование прямоугольников на изображениях является распространенной задачей. Gocv — это популярная оболочка языка программирования Go для OpenCV, которая предоставляет широкий спектр функций и инструментов для задач компьютерного зрения. В этой статье мы рассмотрим различные методы рисования прямоугольников на изображениях с помощью Gocv, а также приведем примеры кода.
Метод 1: рисование прямоугольника с фиксированными координатами
Пример кода:
import (
"gocv.io/x/gocv"
)
func main() {
// Load the image
img := gocv.IMRead("image.jpg", gocv.IMReadColor)
// Define the rectangle coordinates
rect := image.Rect(100, 100, 300, 200)
// Draw the rectangle on the image
gocv.Rectangle(&img, rect, color.RGBA{255, 0, 0, 0}, 2)
// Display the image
window := gocv.NewWindow("Rectangle")
defer window.Close()
window.IMShow(img)
window.WaitKey(0)
}
Метод 2: рисование прямоугольника с помощью мыши
Пример кода:
import (
"gocv.io/x/gocv"
)
var (
isDrawing bool
rect image.Rectangle
)
func onMouse(event int, x int, y int, flags int, param interface{}) {
switch event {
case gocv.MouseEventLButtonDown:
isDrawing = true
rect = image.Rect(x, y, x, y)
case gocv.MouseEventLButtonUp:
isDrawing = false
gocv.Rectangle(param.(*gocv.Mat), rect, color.RGBA{0, 255, 0, 0}, 2)
case gocv.MouseEventMouseMove:
if isDrawing {
rect.Max.X = x
rect.Max.Y = y
}
}
}
func main() {
// Load the image
img := gocv.IMRead("image.jpg", gocv.IMReadColor)
// Create a window and set the mouse callback
window := gocv.NewWindow("Rectangle")
defer window.Close()
window.IMShow(img)
window.SetMouseCallback(onMouse, &img)
window.WaitKey(0)
}
Метод 3: рисование нескольких прямоугольников с ограничивающими рамками
Пример кода:
import (
"gocv.io/x/gocv"
)
func main() {
// Load the image
img := gocv.IMRead("image.jpg", gocv.IMReadColor)
// Define the bounding boxes
rects := []image.Rectangle{
image.Rect(100, 100, 300, 200),
image.Rect(400, 200, 600, 400),
image.Rect(200, 300, 400, 500),
}
// Draw rectangles on the image
for _, rect := range rects {
gocv.Rectangle(&img, rect, color.RGBA{0, 0, 255, 0}, 2)
}
// Display the image
window := gocv.NewWindow("Rectangles")
defer window.Close()
window.IMShow(img)
window.WaitKey(0)
}
Рисование прямоугольников на изображениях с помощью Gocv — простая задача. В этой статье мы рассмотрели три различных метода: рисование прямоугольника с фиксированными координатами, рисование прямоугольника на основе взаимодействия с мышью и рисование нескольких прямоугольников с ограничивающими рамками. Эти методы обеспечивают гибкость и контроль, когда дело доходит до аннотирования и выделения интересующих областей на изображениях. Используя возможности Gocv и OpenCV, разработчики могут с легкостью создавать надежные приложения компьютерного зрения.