Рисование прямоугольников на изображениях с помощью Gocv: подробное руководство

В приложениях компьютерного зрения и обработки изображений рисование прямоугольников на изображениях является распространенной задачей. 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, разработчики могут с легкостью создавать надежные приложения компьютерного зрения.