Last active 6 months ago

drholy revised this gist 6 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

README.md

@@ -1 +1 @@
1 - !["20260420_132953.jpg"]("20260420_132953.jpg")
1 + ![](https://gist.byte-mate.ru/drholy/cb9a5a3506ab41fea3fa64c1490a5bcd#file-png)

drholy revised this gist 6 months ago. Go to revision

No changes

drholy revised this gist 6 months ago. Go to revision

1 file changed, 1 insertion

README.md(file created)

@@ -0,0 +1 @@
1 + !["20260420_132953.jpg"]("20260420_132953.jpg")

drholy revised this gist 6 months ago. Go to revision

1 file changed, 0 insertions, 0 deletions

Схема.png(file created)

Binary file changes are not shown

drholy revised this gist 6 months ago. Go to revision

2 files changed, 0 insertions, 0 deletions

20260420_132953.jpg(file created)

Binary file changes are not shown

20260420_133006.jpg(file created)

Binary file changes are not shown

drholy revised this gist 6 months ago. Go to revision

1 file changed, 2 insertions

info.md

@@ -1,3 +1,5 @@
1 + # Это не протестированный образ
2 +
1 3 Вот готовый `Dockerfile`. Поскольку официальная поддержка CUDA в пакетах `opencv-python` и `ffmpeg` через `pip`/`dnf` отсутствует, библиотеки собираются из исходников с флагами аппаратного ускорения NVIDIA.
2 4
3 5 ```dockerfile

drholy revised this gist 6 months ago. Go to revision

1 file changed, 86 insertions

\321\201\320\261\320\276\321\200\320\272\320\260 harvesters.md" (file created)

@@ -0,0 +1,86 @@
1 + Установка `harvesters` из исходного кода выполняется стандартным для современных Python-пакетов способом. Библиотека написана на чистом Python (использует `ctypes` для взаимодействия с GenTL), поэтому компиляция C/C++ не требуется.
2 +
3 + ### 📦 Требования
4 + - Python **3.7** или выше
5 + - `git`
6 + - `pip` (желательно актуальной версии)
7 + - Рекомендуется использовать виртуальное окружение
8 +
9 + ---
10 +
11 + ### 🛠 Пошаговая инструкция
12 +
13 + #### 1. Клонирование репозитория
14 + ```bash
15 + git clone https://github.com/genicam/harvesters.git
16 + cd harvesters
17 + ```
18 +
19 + #### 2. Создание и активация виртуального окружения
20 + **Linux / macOS:**
21 + ```bash
22 + python -m venv venv
23 + source venv/bin/activate
24 + ```
25 + **Windows (CMD):**
26 + ```cmd
27 + python -m venv venv
28 + venv\Scripts\activate.bat
29 + ```
30 + **Windows (PowerShell):**
31 + ```powershell
32 + python -m venv venv
33 + venv\Scripts\Activate.ps1
34 + ```
35 +
36 + #### 3. Обновление инструментов сборки
37 + ```bash
38 + pip install --upgrade pip setuptools wheel build
39 + ```
40 +
41 + #### 4. Установка из исходников
42 + ```bash
43 + pip install .
44 + ```
45 + > 💡 Эта команда автоматически разрешит все зависимости (`numpy`, `genicam`-обёртки и др.), указанные в `pyproject.toml`.
46 +
47 + ---
48 +
49 + ### 🧑‍💻 Режим разработки (editable install)
50 + Если вы планируете вносить правки в код или запускать тесты, установите пакет в режиме разработки:
51 + ```bash
52 + pip install -e .[dev]
53 + ```
54 + *Если группа `dev` не определена в вашем коммите, используйте просто `pip install -e .`*
55 +
56 + Теперь изменения в исходниках будут сразу доступны без повторной установки.
57 +
58 + ---
59 +
60 + ### ✅ Проверка установки
61 + ```bash
62 + python -c "import harvesters; print(harvesters.__version__)"
63 + ```
64 + Команда должна вывести номер версии без ошибок.
65 +
66 + ---
67 +
68 + ### ⚠️ Важные нюансы
69 + 1. **GenTL Producer (`.cti` файлы)**
70 + `harvesters` — это только клиентская библиотека. Для работы с камерами вам потребуется **GenTL Producer** от производителя оборудования (Basler, FLIR, Stemmer, OpenCV GenICam и т.д.). Путь к `.cti` файлу указывается при инициализации:
71 + ```python
72 + from harvesters.core import Harvester
73 + h = Harvester()
74 + h.add_file('/path/to/your/producer.cti')
75 + h.update()
76 + ```
77 +
78 + 2. **Зависимости от ОС**
79 + На некоторых Linux-дистрибутивах может потребоваться установить системные пакеты для `numpy` или `ctypes` (обычно `python3-dev`, `libffi-dev`), но в 95% случаев `pip` справляется самостоятельно.
80 +
81 + 3. **Официальная документация**
82 + - GitHub: https://github.com/genicam/harvesters
83 + - Docs: https://genicam.github.io/harvesters/
84 + - Примеры использования: папка `samples/` в репозитории
85 +
86 + Если при установке возникнут ошибки (например, конфликт версий `numpy` или проблемы с разрешениями), пришлите вывод консоли — помогу разобраться.

drholy revised this gist 6 months ago. Go to revision

1 file changed, 26 insertions, 1 deletion

info.md

@@ -1,3 +1,6 @@
1 + Вот готовый `Dockerfile`. Поскольку официальная поддержка CUDA в пакетах `opencv-python` и `ffmpeg` через `pip`/`dnf` отсутствует, библиотеки собираются из исходников с флагами аппаратного ускорения NVIDIA.
2 +
3 + ```dockerfile
1 4 FROM registry.red-soft.ru/ubi8/python-311:latest
2 5
3 6 # Переключаемся на root для установки системных пакетов
@@ -92,4 +95,26 @@ ENV PYTHONUNBUFFERED=1
92 95 USER 1001
93 96 WORKDIR /app
94 97
95 - CMD ["python3.11", "-c", "import cv2; print(f'OpenCV: {cv2.__version__}'); print('CUDA devices:', cv2.cuda.getCudaEnabledDeviceCount())"]
98 + CMD ["python3.11", "-c", "import cv2; print(f'OpenCV: {cv2.__version__}'); print('CUDA devices:', cv2.cuda.getCudaEnabledDeviceCount())"]
99 + ```
100 +
101 + ### 🔧 Как собрать и запустить
102 +
103 + **1. Сборка образа**
104 + ```bash
105 + docker build -t ubi8-python-cv-nvidia .
106 + ```
107 +
108 + **2. Запуск с доступом к GPU**
109 + Контейнер необходимо запускать с пробросом NVIDIA GPU, иначе `cv2.cuda` и `ffmpeg` не увидят видеокарту:
110 + ```bash
111 + docker run --gpus all --rm ubi8-python-cv-nvidia
112 + ```
113 + *(Если используется старая версия Docker, вместо `--gpus all` потребуется `--device /dev/nvidia0 --device /dev/nvidiactl --device /dev/nvidia-uvm`)*
114 +
115 + ### 📌 Важные примечания
116 +
117 + 1. **Время сборки и размер образа**: Компиляция OpenCV и FFmpeg из исходников занимает 10–30 минут (зависит от CPU) и значительно увеличивает размер образа. Для продакшена рекомендуется вынести этапы компиляции в отдельный stage или использовать кэширование Docker BuildKit.
118 + 2. **Архитектура GPU**: В `CUDA_ARCH_BIN` указаны коды архитектур от GTX 900 до RTX 40 серии. Если у вас конкретная карта (например, только RTX 3090), ускорьте сборку, оставив только `8.6`.
119 + 3. **Harvesters**: Пакет `harvesters` установлен через `pip`. Для работы с реальными промышленными камерами (GenICam/USB3Vision) вам потребуется скопировать в контейнер `.cti` файлы от производителя камеры и установить их в переменную окружения `GENICAM_GENTL64_PATH`.
120 + 4. **cuDNN**: OpenCV собрана с `OPENCV_DNN_CUDA=ON`. Если нужен полный бэкенд cuDNN для нейросетей, его необходимо скачать вручную с сайта NVIDIA Developer и добавить в образ перед сборкой OpenCV (требуется учетная запись).

drholy revised this gist 6 months ago. Go to revision

1 file changed, 95 insertions

info.md(file created)

@@ -0,0 +1,95 @@
1 + FROM registry.red-soft.ru/ubi8/python-311:latest
2 +
3 + # Переключаемся на root для установки системных пакетов
4 + USER root
5 +
6 + # Устанавливаем dnf-plugins-core для управления репозиториями
7 + RUN dnf install -y dnf-plugins-core
8 +
9 + # Включаем репозиторий Codeready Builder (содержит dev-пакеты в UBI)
10 + RUN dnf config-manager --set-enabled ubi-8-codeready-builder
11 +
12 + # Установка зависимостей сборки, инструментов и запрошенных системных библиотек
13 + # Примечание: названия пакетов адаптированы под RHEL 8 / UBI 8:
14 + # libusb-1.0-0 -> libusb1
15 + # libglib2.0-0 -> glib2
16 + # libgl1-mesa-glx -> mesa-libGL
17 + # libgomp1 -> libgomp
18 + RUN dnf install -y \
19 + gcc gcc-c++ make cmake git pkgconfig \
20 + python3.11-devel \
21 + libusb1 glib2 mesa-libGL libgomp net-tools \
22 + nasm yasm wget curl \
23 + && dnf clean all
24 +
25 + # Добавляем официальный репозиторий NVIDIA CUDA и устанавливаем CUDA Toolkit (12.4)
26 + RUN dnf install -y https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8-repo-latest-1.x86_64.rpm \
27 + && dnf install -y cuda-toolkit-12-4 \
28 + && dnf clean all
29 +
30 + ENV PATH=/usr/local/cuda/bin:$PATH
31 + ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
32 + ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
33 +
34 + # Установка Python-библиотеки harvesters
35 + RUN pip install --no-cache-dir harvesters
36 +
37 + # ==========================================================
38 + # Сборка FFmpeg с поддержкой NVIDIA (cuvid, nvenc, nvdec)
39 + # ==========================================================
40 + RUN git clone --depth 1 --branch n7.0 https://github.com/FFmpeg/FFmpeg.git /tmp/ffmpeg \
41 + && cd /tmp/ffmpeg \
42 + && ./configure \
43 + --prefix=/usr/local \
44 + --enable-cuda-nvcc \
45 + --enable-cuvid \
46 + --enable-nvenc \
47 + --enable-nvdec \
48 + --enable-gpl \
49 + --enable-nonfree \
50 + --enable-shared \
51 + --extra-cflags="-I/usr/local/cuda/include" \
52 + --extra-ldflags="-L/usr/local/cuda/lib64" \
53 + && make -j$(nproc) \
54 + && make install \
55 + && ldconfig \
56 + && rm -rf /tmp/ffmpeg
57 +
58 + # ==========================================================
59 + # Сборка OpenCV с поддержкой CUDA
60 + # ==========================================================
61 + RUN git clone --depth 1 --branch 4.9.0 https://github.com/opencv/opencv.git /tmp/opencv \
62 + && git clone --depth 1 --branch 4.9.0 https://github.com/opencv/opencv_contrib.git /tmp/opencv_contrib \
63 + && mkdir -p /tmp/opencv/build && cd /tmp/opencv/build \
64 + && cmake -D CMAKE_BUILD_TYPE=RELEASE \
65 + -D CMAKE_INSTALL_PREFIX=/usr/local \
66 + -D PYTHON3_EXECUTABLE=/usr/bin/python3.11 \
67 + -D WITH_CUDA=ON \
68 + -D CUDA_ARCH_BIN=5.2,6.0,6.1,7.0,7.5,8.0,8.6,8.9,9.0 \
69 + -D ENABLE_FAST_MATH=ON \
70 + -D CUDA_FAST_MATH=ON \
71 + -D WITH_CUBLAS=ON \
72 + -D OPENCV_DNN_CUDA=ON \
73 + -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \
74 + -D BUILD_opencv_python3=ON \
75 + -D BUILD_TESTS=OFF \
76 + -D BUILD_PERF_TESTS=OFF \
77 + -D BUILD_EXAMPLES=OFF \
78 + .. \
79 + && make -j$(nproc) \
80 + && make install \
81 + && ldconfig \
82 + && rm -rf /tmp/opencv /tmp/opencv_contrib
83 +
84 + # Очистка инструментов сборки для уменьшения размера образа
85 + RUN dnf remove -y gcc gcc-c++ make cmake nasm yasm wget curl git \
86 + && dnf clean all \
87 + && pip cache purge
88 +
89 + ENV PYTHONUNBUFFERED=1
90 +
91 + # Возврат к стандартному non-root пользователю UBI
92 + USER 1001
93 + WORKDIR /app
94 +
95 + CMD ["python3.11", "-c", "import cv2; print(f'OpenCV: {cv2.__version__}'); print('CUDA devices:', cv2.cuda.getCudaEnabledDeviceCount())"]

drholy revised this gist 6 months ago. Go to revision

1 file changed, 0 insertions, 0 deletions

No changes

Newer Older