1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ZhijianCao_admin-LanelineDetection

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
help.md 9.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 04.03.2025 11:28 373443b

Заметки по OpenCV

1. Mat (матрица)

Mat(строка, колонка, тип) о типе в OpenCV существует множество различных типов для Mat, среди которых есть метод type(), который возвращает тип данной матрицы. Тип указывает на тип данных элементов матрицы и количество каналов, это набор заранее определённых констант, названия которых следуют правилу CV_(битность)+(тип данных)+(количество каналов). Конкретные значения представлены ниже
битность: 8 тип данных:

имя описание
U беззнаковое целое число
S со знаком целое число
f число с плавающей запятой

количество каналов C1 (или пустое) C2 C3 C(n)

имя описание
C1 один канал
C2 два канала
C3 три канала
C(n) n каналов

2. Обработка шума

Обработка шума в OpenCV включает:

  1. Средняя фильтрация
  2. Гауссовская фильтрация
  3. Центральная фильтрация

public class ImageZaoSheng {

    /**
     * Средняя фильтрация
     */
    @Test
    public void blur() {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // Загрузка в оттенках серого
        Mat src = Imgcodecs.imread("/Users/hecj/Desktop/car/erzhi.jpeg");
        Mat dst = src.clone();
        Imgproc.blur(src, dst, new Size(9, 9), new Point(-1, -1), Core.BORDER_DEFAULT);
        Imgcodecs.imwrite("/Users/hecj/Desktop/car/erzhi_1.jpeg", dst);

    }

    /**
     * Гауссовская фильтрация
     */
    @Test
    public void GaussianBlur() {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // Загрузка в оттенках серого
        Mat src = Imgcodecs.imread("/Users/hecj/Desktop/car/erzhi.jpeg");
        Mat dst = src.clone();
        Imgproc.GaussianBlur(src, dst, new Size(9, 9), 0, 0, Core.BORDER_DEFAULT);
        Imgcodecs.imwrite("/Users/hecj/Desktop/car/erzhi_2.jpeg", dst);
    }
``````markdown
## 3. Определение круглых объектов

```java
{
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat src = Imgcodecs.imread("F:\\websbook_com_1589226.jpg");

    Mat dst = src.clone();
    Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);

    Mat circles = new Mat();
    Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100, 440, 50, 0, 345);
    // Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100)
}

Описание параметров

Метод HoughCircles используется для обнаружения круглых объектов на изображении. Он принимает следующие параметры:

  • image: Исходное изображение в оттенках серого.
  • circles: Матрица, которая будет содержать координаты центров найденных кругов и их радиусы.
  • method: Метод обнаружения кругов (Imgproc.HOUGH_GRADIENT).
  • dp: Уровень детализации (коэффициент отношения размера окон высоты и ширины).
  • minDist: Минимальное расстояние между центрами найденных кругов.
  • param1: Параметр метода Hough (threshold для обнаружения границ).
  • param2: Параметр метода Hough (`累加部分与上述指令无关,因此无需翻译。以下是根据给定的规则进行修改后的文本:
## 3. Определение круглых объектов

```java
{
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat src = Imgcodecs.imread("F:\\websbook_com_1589226.jpg");

    Mat dst = src.clone();
    Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);

    Mat circles = new Mat();
    Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100, 440, 50, 0, 345);
    // Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100)
}

Описание параметров

Метод HoughCircles используется для обнаружения круглых объектов на изображении. Он принимает следующие параметры:

  • image: Исходное изображение в оттенках серого.
  • circles: Матрица, которая будет содержать координаты центров найденных кругов и их радиусы.
  • method: Метод обнаружения кругов (Imgproc.HOUGH_GRADIENT).
  • dp: Уровень детализации (коэффициент отношения размера окон высоты и ширины).
  • minDist: Минимальное расстояние между центрами найденных кругов.
  • param1: Параметр метода Hough (threshold для обнаружения границ).
  • param2: Параметр метода Hough (cannyThreshold для обнаружения границ).
  • minRadius: Минимальный радиус круга.
  • maxRadius: Максимальный радиус круга.
```**изображение**: Исходное изображение  
**круги**: Вектор выходных данных с координатами центра круга (x, y) и радиусом r  
**метод**: Используемый метод обнаружения, в данном случае Imgproc.HOUGH_GRADIENT  
**dp**: Обратное отношение между размером аккумулирующего изображения и исходного изображения  
**minDist**: Минимальное расстояние между центрами обнаруженных окружностей  
**param1**: Параметр, связанный с выбранным методом обнаружения. Для HOUGH_GRADIENT это верхний порог детектора границ. По умолчанию равно 100  
**param2**: Параметр, связанный с выбранным методом обнаружения. Для HOUGH_GRADIENT это пороговое значение аккумулятора. Чем меньше значение, тем больше незначительных окружностей будет обнаружено  
**minRadius**: Минимальный радиус окружности  
**maxRadius**: Максимальный радиус окружности (если minRadius и maxRadius равны 0, то HoughCircles автоматически вычисляет радиус)

```markdown
## Тип линий lineType в OpenCV
Существует три значения: LINE_8 (по умолчанию), LINE_4 и LINE_AA.
```Производительность: LINE_8 > LINE_AA  
Качество отображения: LINE_AA > LINE_8  

## Обнаружение прямых линий
```python
Imgproc.HoughLines(image, lines, rho, theta, threshold, srn, stn, min_theta, max_theta)

Параметры:

  • image: Исходное изображение
  • lines: Вектор выходных данных после применения преобразования Хафа для хранения найденных линий
  • rho: Точность расстояния в пикселях
  • theta: Точность угла в радианах
  • threshold: Минимальное значение порога для признания части изображения как прямой линии
  • srn: Делитель для параметра rho, имеет значение по умолчанию 0
  • stn: Делитель для параметра theta, имеет значение по умолчанию 0
  • min_theta: Минимальный угол найденной линии
  • max_theta: Максимальный угол найденной линии

Аккумулированное вероятностное преобразование Хафа:

Imgproc.HoughLinesP(image, lines, rho, theta, threshold, min_line_length, max_line_gap)

Параметры:

  • image: Исходное изображение
  • lines: Вектор выходных данных после применения преобразования Хафа для хранения найденных линий
  • rho: Точность расстояния в пикселях
  • theta: Точность угла в радианах
  • threshold: Минимальное значение порога для признания части изображения как прямой линии
  • min_line_length: Минимальная длина сегмента линии, значение по умолчанию 0
  • max_line_gap: Максимальное допустимое расстояние между точками одной линии, чтобы считать их частью одной и той же линии, значение по умолчанию 0

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ZhijianCao_admin-LanelineDetection.git
git@api.gitlife.ru:oschina-mirror/ZhijianCao_admin-LanelineDetection.git
oschina-mirror
ZhijianCao_admin-LanelineDetection
ZhijianCao_admin-LanelineDetection
master