Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/67: Рейтинг темы: голосов - 67, средняя оценка - 4.70
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481

Группировка точек

21.06.2021, 09:11. Показов 12859. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть 3D карта допустим гор, я её обрезаю по высоте и получаю координаты вершин гор. И хочу решить такую задачу.

Вход - массив вида:
Python
1
2
3
list_coord = [[1, 1, 1], [2, 1, 1], [1, 1, 1], [12, 11, 11],
              [1, 2, 2], [7, 6, 6], [13, 12, 12],
              [11, 13, 13], [6, 6, 6], [6, 7, 7], [8, 8, 8]]
Выход - количество вершин гор
Python
1
2
3
dct = [{'Объект 1': [[1, 1, 1], [2, 1, 1], [1, 1, 1], [1, 2, 2]]}, 
       {'Объект 2': [[7, 6, 6], [6, 6, 6], [6, 7, 7], [7, 6, 7]]}, 
       {'Объект 3': [[12, 11, 11], [11, 13, 13], [13, 12, 12]]}]

Все вершины разделены между собой как минимум кругом пустоты радиусом 5-10 точек

Мои мысли
Запустить цикл по list_coord, и если точка не находится в диапазоне +- 3 то добавляем её в новый массив, в итоге на выходе должен был быть массив с тремя координатами, но что то не получается доделать логику

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
count_point =[list_coord[0]]
 
for i in list_coord:
 
    for j in count_point:
        x, y = j[0], j[1]
        x_min, x_max = i[0] - 3, i[0] + 3
        y_min, y_max = i[1] - 3, i[1] + 3
 
        if not (x_min < x < x_max and y_min < y < y_max) and i not in count_point:
            count_point.append(i)
            
 
print(count_point)
>> [[1, 1, 1], [12, 11, 11], [11, 13, 13], [13, 12, 12], [7, 6, 6], [6, 6, 6], [6, 7, 7], [8, 8, 8]]
Тут ошибка в том что первый раз он добавляет [1, 1, 1], дальше всё ок, похожие массивы он пропускает, потом добавляет [12, 11, 11] и начинает заново сравнивать list_coord с count_point[0] и соответственно записывает все остальные значения массива, как это можно исправить?

Не по теме:

p.s. формулировки мыслей конечно ужасные если что спрашивайте

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.06.2021, 09:11
Ответы с готовыми решениями:

Даны действительные числа (xi, yi), i = 1,2, . n - координаты точек на плоскости. Определить количество точек, попада
Даны действительные числа (xi, yi), i = 1,2, ... n - координаты точек на плоскости. Определить количество точек, попадающих в...

Группировка + сложение
Доброго всем дня господа ) возможно как то сгруппировать одинаковые элементы по названию (индексу в подсписке) и сложить их значения по...

Группировка файлов
main.py: import Collections S = Collections.CStack() for i in range(0, 10): S.push(i) S.println() for i in range(0,...

58
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
23.06.2021, 13:17
Лучший ответ Сообщение было отмечено u235 как решение

Решение

Студворк — интернет-сервис помощи студентам
RSAX, нет, тут сетка нерегулярная. Нужна триангуляция.

Добавлено через 5 часов 44 минуты
RSAX, Вот код, который строит триангулированые сетки по вашим данным:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import matplotlib.pyplot as plt
import matplotlib.tri as tri
 
 
t=[[0.0789702838086786, 0.026726748654913795, -0.33899998664855957],[0.07952999876630526, 0.026726748654913795, -0.33899998664855957],[0.07985346391344544, 0.02664790970030836, -0.33799999952316284],[0.08041152781569287, 0.02664790970030836, -0.33799999952316284],[0.0809695917179403, 0.02664790970030836, -0.33799999952316284],[0.0789702838086786, 0.026166138141604005, -0.33899998664855957],[0.07929540001119802, 0.026088952884101083, -0.33799999952316284],[0.07961721410295897, 0.02601176762659816, -0.3370000123977661],[0.08017362694982716, 0.02601176762659816, -0.3370000123977661],[0.08049048073615488, 0.025934580068765693, -0.335999995470047],[0.0810452424784379, 0.025934580068765693, -0.335999995470047],[0.08160000422072093, 0.025934580068765693, -0.335999995470047],[0.07929540001119802, 0.025529996067893804, -0.33799999952316284],[0.07961721410295897, 0.025454464507493394, -0.3370000123977661],[0.08017362694982716, 0.025454464507493394, -0.3370000123977661],[0.08049048073615488, 0.025378930696048088, -0.335999995470047],[0.0810452424784379, 0.025378930696048088, -0.335999995470047],[0.08160000422072093, 0.025378930696048088, -0.335999995470047],[0.025088755109876883, -0.10439716224391743, -0.3370000123977661],[0.02564516795674507, -0.10439716224391743, -0.3370000123977661],[0.02620158080361325, -0.10439716224391743, -0.3370000123977661],[0.026757993650481437, -0.10439716224391743, -0.3370000123977661],[0.02731440649734962, -0.10439716224391743, -0.3370000123977661],[0.027870819344217805, -0.10439716224391743, -0.3370000123977661],[0.02842723219108599, -0.10439716224391743, -0.3370000123977661],[0.028983645037954173, -0.10439716224391743, -0.3370000123977661],[0.02954005788482236, -0.10439716224391743, -0.3370000123977661],[0.030096470731690545, -0.10439716224391743, -0.3370000123977661],[0.030652883578558728, -0.10439716224391743, -0.3370000123977661],[0.031209296425426913, -0.10439716224391743, -0.3370000123977661],[0.0317657092722951, -0.10439716224391743, -0.3370000123977661],[0.032322122119163285, -0.10439716224391743, -0.3370000123977661],[0.032878534966031464, -0.10439716224391743, -0.3370000123977661],[0.03343494781289965, -0.10439716224391743, -0.3370000123977661],[0.033991360659767836, -0.10439716224391743, -0.3370000123977661],[0.03454777350663602, -0.10439716224391743, -0.3370000123977661],[0.03510418635350421, -0.10439716224391743, -0.3370000123977661],[0.035660599200372387, -0.10439716224391743, -0.3370000123977661],[0.03621701204724057, -0.10439716224391743, -0.3370000123977661],[0.03677342489410876, -0.10439716224391743, -0.3370000123977661],[0.037329837740976944, -0.10439716224391743, -0.3370000123977661],[0.03788625058784513, -0.10439716224391743, -0.3370000123977661],[0.02635707779177199, -0.10557733248619632, -0.33899998664855957],[0.026916792749398656, -0.10557733248619632, -0.33899998664855957],[0.027395457102187472, -0.10526589892460925, -0.33799999952316284],[0.0279535210044349, -0.10526589892460925, -0.33799999952316284],[0.028511584906682323, -0.10526589892460925, -0.33799999952316284],[0.028983645037954173, -0.10495446536302219, -0.3370000123977661],[0.02954005788482236, -0.10495446536302219, -0.3370000123977661],[0.0301857766134246, -0.10526589892460925, -0.33799999952316284],[0.030652883578558728, -0.10495446536302219, -0.3370000123977661],[0.031209296425426913, -0.10495446536302219, -0.3370000123977661],[0.0317657092722951, -0.10495446536302219, -0.3370000123977661],[0.032322122119163285, -0.10495446536302219, -0.3370000123977661],[0.032878534966031464, -0.10495446536302219, -0.3370000123977661],[0.03343494781289965, -0.10495446536302219, -0.3370000123977661],[0.033991360659767836, -0.10495446536302219, -0.3370000123977661],[0.03454777350663602, -0.10495446536302219, -0.3370000123977661],[0.03510418635350421, -0.10495446536302219, -0.3370000123977661],[0.035660599200372387, -0.10495446536302219, -0.3370000123977661],[0.03621701204724057, -0.10495446536302219, -0.3370000123977661],[0.03677342489410876, -0.10495446536302219, -0.3370000123977661],[0.02635707779177199, -0.1061379429995061, -0.33899998664855957],[0.026916792749398656, -0.1061379429995061, -0.33899998664855957],[0.027395457102187472, -0.10582485574081653, -0.33799999952316284],[0.0279535210044349, -0.10582485574081653, -0.33799999952316284],[0.028511584906682323, -0.10582485574081653, -0.33799999952316284],[0.028983645037954173, -0.10551176848212696, -0.3370000123977661],[0.02954005788482236, -0.10551176848212696, -0.3370000123977661],[0.0301857766134246, -0.10582485574081653, -0.33799999952316284],[0.030652883578558728, -0.10551176848212696, -0.3370000123977661],[0.031209296425426913, -0.10551176848212696, -0.3370000123977661],[0.0317657092722951, -0.10551176848212696, -0.3370000123977661],[0.032322122119163285, -0.10551176848212696, -0.3370000123977661],[0.032878534966031464, -0.10551176848212696, -0.3370000123977661],[0.03343494781289965, -0.10551176848212696, -0.3370000123977661],[0.033991360659767836, -0.10551176848212696, -0.3370000123977661],[0.03454777350663602, -0.10551176848212696, -0.3370000123977661],[0.03510418635350421, -0.10551176848212696, -0.3370000123977661],[0.035660599200372387, -0.10551176848212696, -0.3370000123977661],[0.03621701204724057, -0.10551176848212696, -0.3370000123977661],[0.03677342489410876, -0.10551176848212696, -0.3370000123977661],[0.030743840515672024, -0.10638381255702381, -0.33799999952316284],[0.03130190441791945, -0.10638381255702381, -0.33799999952316284],[0.031859968320166875, -0.10638381255702381, -0.33799999952316284],[0.0324180322224143, -0.10638381255702381, -0.33799999952316284],[0.03297609612466172, -0.10638381255702381, -0.33799999952316284],[0.03343494781289965, -0.10606907160123173, -0.3370000123977661],[0.033991360659767836, -0.10606907160123173, -0.3370000123977661],[0.03454777350663602, -0.10606907160123173, -0.3370000123977661],[0.03510418635350421, -0.10606907160123173, -0.3370000123977661]]
t=np.array(t)
points=t[:,:2]
x = points[:, 0]
y =points[:, 1]
triang = tri.Triangulation(x, y)
fig1, ax1 = plt.subplots()
ax1.set_aspect('equal')
 
max_radius = 0.02
triangles = triang.triangles
 
 
xtri = x[triangles] - np.roll(x[triangles], 1, axis=1)
ytri = y[triangles] - np.roll(y[triangles], 1, axis=1)
maxi = np.max(np.sqrt(xtri**2 + ytri**2), axis=1)
triang.set_mask(maxi > max_radius)
 
ax1.triplot(triang, color="red")
plt.show()



Дальше осталось прикрутить что-то типа:

scipy.sparse.csgraph.connected_component s()
для вычисления числа кластеров.

Не по теме:

p.s. Как снять отметку "решение"? случайно нажал..

1
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
23.06.2021, 13:30  [ТС]

Не по теме:

u235, ваш ответ близок к решению, пусть остаётся отметка)


Спасибо большое за код, уже час искал ответ!
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
23.06.2021, 13:34  [ТС]
u235, из скрина №1 3D получилось вот такое, я правильно понял что это некий перевод из 3D в 2D и связывание точек в треугольники с условием что связанная точка лежит в радиусе 0.02?
Миниатюры
Группировка точек   Группировка точек  
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
23.06.2021, 13:59  [ТС]
u235, а DBSCAN хорошая идея использовать? В scipy.sparse.csgraph.connected_component s() я что передаю, точки triang.x и .y или triang.triangles?

Тут просто массив NxN размера должен быть как я понимаю

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from scipy.sparse import csr_matrix
from scipy.sparse.csgraph import connected_components
 
graph = [[0, 1, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0]]
graph = csr_matrix(graph)
print(graph)
 
  (0, 1)    1
  (0, 2)    1
  (1, 2)    1
  (3, 4)    1
 
n_components, labels = connected_components(csgraph=graph, directed=False, return_labels=True)
 
n_components >> 2
labels >> array([0, 0, 0, 1, 1], dtype=int32)
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
23.06.2021, 14:03
По первому посту - да, все верно.
По поводу DBSCAN - это не совсем то, мне кажется, это более ресурсоемкое решение.
может что-то еще есть в networkx.

Добавлено через 4 минуты
RSAX, для экономии памяти лучше использовать разреженные матрицы, а не полные NxN
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
24.06.2021, 08:24
RSAX, вот что получилось:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.tri import Triangulation
import scipy as sp
 
 
coord=[[0.0789702838086786, 0.026726748654913795, -0.33899998664855957],[0.07952999876630526, 0.026726748654913795, -0.33899998664855957],[0.07985346391344544, 0.02664790970030836, -0.33799999952316284],[0.08041152781569287, 0.02664790970030836, -0.33799999952316284],[0.0809695917179403, 0.02664790970030836, -0.33799999952316284],[0.0789702838086786, 0.026166138141604005, -0.33899998664855957],[0.07929540001119802, 0.026088952884101083, -0.33799999952316284],[0.07961721410295897, 0.02601176762659816, -0.3370000123977661],[0.08017362694982716, 0.02601176762659816, -0.3370000123977661],[0.08049048073615488, 0.025934580068765693, -0.335999995470047],[0.0810452424784379, 0.025934580068765693, -0.335999995470047],[0.08160000422072093, 0.025934580068765693, -0.335999995470047],[0.07929540001119802, 0.025529996067893804, -0.33799999952316284],[0.07961721410295897, 0.025454464507493394, -0.3370000123977661],[0.08017362694982716, 0.025454464507493394, -0.3370000123977661],[0.08049048073615488, 0.025378930696048088, -0.335999995470047],[0.0810452424784379, 0.025378930696048088, -0.335999995470047],[0.08160000422072093, 0.025378930696048088, -0.335999995470047],[0.025088755109876883, -0.10439716224391743, -0.3370000123977661],[0.02564516795674507, -0.10439716224391743, -0.3370000123977661],[0.02620158080361325, -0.10439716224391743, -0.3370000123977661],[0.026757993650481437, -0.10439716224391743, -0.3370000123977661],[0.02731440649734962, -0.10439716224391743, -0.3370000123977661],[0.027870819344217805, -0.10439716224391743, -0.3370000123977661],[0.02842723219108599, -0.10439716224391743, -0.3370000123977661],[0.028983645037954173, -0.10439716224391743, -0.3370000123977661],[0.02954005788482236, -0.10439716224391743, -0.3370000123977661],[0.030096470731690545, -0.10439716224391743, -0.3370000123977661],[0.030652883578558728, -0.10439716224391743, -0.3370000123977661],[0.031209296425426913, -0.10439716224391743, -0.3370000123977661],[0.0317657092722951, -0.10439716224391743, -0.3370000123977661],[0.032322122119163285, -0.10439716224391743, -0.3370000123977661],[0.032878534966031464, -0.10439716224391743, -0.3370000123977661],[0.03343494781289965, -0.10439716224391743, -0.3370000123977661],[0.033991360659767836, -0.10439716224391743, -0.3370000123977661],[0.03454777350663602, -0.10439716224391743, -0.3370000123977661],[0.03510418635350421, -0.10439716224391743, -0.3370000123977661],[0.035660599200372387, -0.10439716224391743, -0.3370000123977661],[0.03621701204724057, -0.10439716224391743, -0.3370000123977661],[0.03677342489410876, -0.10439716224391743, -0.3370000123977661],[0.037329837740976944, -0.10439716224391743, -0.3370000123977661],[0.03788625058784513, -0.10439716224391743, -0.3370000123977661],[0.02635707779177199, -0.10557733248619632, -0.33899998664855957],[0.026916792749398656, -0.10557733248619632, -0.33899998664855957],[0.027395457102187472, -0.10526589892460925, -0.33799999952316284],[0.0279535210044349, -0.10526589892460925, -0.33799999952316284],[0.028511584906682323, -0.10526589892460925, -0.33799999952316284],[0.028983645037954173, -0.10495446536302219, -0.3370000123977661],[0.02954005788482236, -0.10495446536302219, -0.3370000123977661],[0.0301857766134246, -0.10526589892460925, -0.33799999952316284],[0.030652883578558728, -0.10495446536302219, -0.3370000123977661],[0.031209296425426913, -0.10495446536302219, -0.3370000123977661],[0.0317657092722951, -0.10495446536302219, -0.3370000123977661],[0.032322122119163285, -0.10495446536302219, -0.3370000123977661],[0.032878534966031464, -0.10495446536302219, -0.3370000123977661],[0.03343494781289965, -0.10495446536302219, -0.3370000123977661],[0.033991360659767836, -0.10495446536302219, -0.3370000123977661],[0.03454777350663602, -0.10495446536302219, -0.3370000123977661],[0.03510418635350421, -0.10495446536302219, -0.3370000123977661],[0.035660599200372387, -0.10495446536302219, -0.3370000123977661],[0.03621701204724057, -0.10495446536302219, -0.3370000123977661],[0.03677342489410876, -0.10495446536302219, -0.3370000123977661],[0.02635707779177199, -0.1061379429995061, -0.33899998664855957],[0.026916792749398656, -0.1061379429995061, -0.33899998664855957],[0.027395457102187472, -0.10582485574081653, -0.33799999952316284],[0.0279535210044349, -0.10582485574081653, -0.33799999952316284],[0.028511584906682323, -0.10582485574081653, -0.33799999952316284],[0.028983645037954173, -0.10551176848212696, -0.3370000123977661],[0.02954005788482236, -0.10551176848212696, -0.3370000123977661],[0.0301857766134246, -0.10582485574081653, -0.33799999952316284],[0.030652883578558728, -0.10551176848212696, -0.3370000123977661],[0.031209296425426913, -0.10551176848212696, -0.3370000123977661],[0.0317657092722951, -0.10551176848212696, -0.3370000123977661],[0.032322122119163285, -0.10551176848212696, -0.3370000123977661],[0.032878534966031464, -0.10551176848212696, -0.3370000123977661],[0.03343494781289965, -0.10551176848212696, -0.3370000123977661],[0.033991360659767836, -0.10551176848212696, -0.3370000123977661],[0.03454777350663602, -0.10551176848212696, -0.3370000123977661],[0.03510418635350421, -0.10551176848212696, -0.3370000123977661],[0.035660599200372387, -0.10551176848212696, -0.3370000123977661],[0.03621701204724057, -0.10551176848212696, -0.3370000123977661],[0.03677342489410876, -0.10551176848212696, -0.3370000123977661],[0.030743840515672024, -0.10638381255702381, -0.33799999952316284],[0.03130190441791945, -0.10638381255702381, -0.33799999952316284],[0.031859968320166875, -0.10638381255702381, -0.33799999952316284],[0.0324180322224143, -0.10638381255702381, -0.33799999952316284],[0.03297609612466172, -0.10638381255702381, -0.33799999952316284],[0.03343494781289965, -0.10606907160123173, -0.3370000123977661],[0.033991360659767836, -0.10606907160123173, -0.3370000123977661],[0.03454777350663602, -0.10606907160123173, -0.3370000123977661],[0.03510418635350421, -0.10606907160123173, -0.3370000123977661]]
coord=np.array(coord)
points=coord[:,:2]
x = points[:, 0]
y =points[:, 1]
triang = Triangulation(points[:, 0], points[:, 1]) #триангуляция набора точек
 
max_radius = 0.02 # максимальное расстояние, cut off
triangles = triang.triangles
xtri = x[triangles] - np.roll(x[triangles], 1, axis=1)
ytri = y[triangles] - np.roll(y[triangles], 1, axis=1)
maxi = np.max(np.sqrt(xtri**2 + ytri**2), axis=1) #максимальная длина стороны треугольника
triang.set_mask(maxi > max_radius) #фильтрация треугольников по длине стороны
num_nodes=np.max(triang.edges)+1 # число вершин
 
graph=sp.sparse.csr_matrix((np.ones(triang.edges.shape[0]),(triang.edges[:,0],triang.edges[:,1])), shape=(num_nodes,num_nodes))
n, labels=sp.sparse.csgraph.connected_components(graph.toarray(), directed=False)
 
fig1, ax1 = plt.subplots()
ax1.set_aspect('equal')
 
for i in range(n):
    ax1.scatter(triang.x[labels==i], triang.y[labels==i], s=0.5)
    print(f'Компонент {i}: \n x,y={triang.x[labels==i], triang.y[labels==i]}')
plt.show()
Миниатюры
Группировка точек  
1
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
25.06.2021, 10:44  [ТС]
u235, Такой ещё вопрос, просто алгоритм интересен, без кода, что я могу сделать с исходным массивом облака точек, чтобы хоть как то разграничить объекты и подготовить их к кластеризации?

На скринах площадь 70х50см, на ней лежат допустим яблоки, использовать визуализацию нельзя, поэтому opencv вряд ли поможет
Миниатюры
Группировка точек   Группировка точек   Группировка точек  

Группировка точек   Группировка точек   Группировка точек  

Группировка точек   Группировка точек   Группировка точек  

0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
25.06.2021, 10:48  [ТС]
По оси Z просто отрезать не получается так чтобы остались только верхушки объектов, потому что если камера наклонена хоть на 1 см отрезается слишком много у объектов по краям
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
25.06.2021, 11:12
RSAX, я бы перевел сначала все на регулярную сетку, т.е. получил картинку. Отфильтровал шумы и выполнил поиск локальных максимумов cv2.minMaxLoc() или что-то подобное. OpenCV прекрасно работает и без визуализации, например, у меня на телефоне из консоли Termux.
Если надо будет разделять уже бинаризированные объекты, то есть Watershed segmentation
см. https://scikit-image.org/docs/... tershed-py
Если надо выровнять "освещение", то см. функцию imclearborder из Matlab/Octave (использует морфологию, можно сделать аналог в OpenCV) , нужно просто поделить изображение на оценку фона (размытое изображение или после imclearborder)
2
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
25.06.2021, 14:18  [ТС]
u235, а я вот чего придумал, а если брать максимум массива, делать запись - кластер 1, далее удалять все точки вокруг него в радиусе который мне нужен и снова искать максимум?
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
25.06.2021, 17:05
RSAX, да, можно и так. Можно просто поиск локальных максимумов в numpy/scipy

Добавлено через 1 час 27 минут
См. функции scipy.signal.find_peaks и scipy.signal.argrelmax для поиска локальных максимумов.
1
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
02.07.2021, 11:16  [ТС]
u235, Можешь глянуть если есть время иерархическую кластеризацию, вот такой вот код, работает почти в 10 раз быстрее

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy
import scipy.cluster.hierarchy as hcluster
 
data = [[i[0], i[1]] for i in arr]
 
# clustering
thresh = 0.05
clusters = hcluster.fclusterdata(data, thresh, criterion="distance")
 
# plotting
plt.scatter(*numpy.transpose(data), c=clusters)
plt.axis("equal")
title = "threshold: %f, number of clusters: %d" % (thresh, len(set(clusters)))
plt.title(title)
plt.show()
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
02.07.2021, 11:30  [ТС]
Осталась наверное последняя проблема разделить вот такой 1 объект на 3
Миниатюры
Группировка точек   Группировка точек  
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
02.07.2021, 15:06
RSAX, вот пример сегментации. https://scikit-image.org/docs/... tershed-py
Но если бы вы нашли локальные максимумы, подобная сегментация возможно и не потребовалась бы.
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
02.07.2021, 16:05  [ТС]
u235, утром смотрел данный пример(даже вкладка открыта XD), но так и не понял как туда 2D массив закинуть, вместо np.logical_or(mask_circle1, mask_circle2), что за тип ему нужен
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
02.07.2021, 17:08
RSAX, тип логический: np.bool там где области - true, где пусто - false
Ну и сетка регулярная (надеюсь вы это сделали?), по сути на входе черно-белая картинка.
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
05.07.2021, 08:45  [ТС]
u235, Ну вот, у меня такая сетка сейчас, я правильно понимаю что мне надо создать массив условно 1280х720, создать его со значениями [0, 0], далее создать переменную типа bool_arr = [i != 0 for i in frame], на выходе получу массив np.bool и дальше нужно его засунуть в image = np.logical_or(bool_arr)?
Миниатюры
Группировка точек  
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
05.07.2021, 14:30  [ТС]
создать его со значениями [0, 0], далее создать переменную типа
не правильно тут написал, создать его со значениями [0, 0], далее взять значения всех моих треугольников, и перебрать пустой массив и сравнить его с треугольниками

Добавлено через 27 минут
А по поводу локальных максимумов, предлагаете что нибудь такое использовать? На моих данные не особо корректно работает, параметры естественно менял

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np
 
points = np.array([[0.08198248, 0.25999721, 0.07041999],
                   [0.19091977, 0.05404123, 0.25826508],
                   [0.8842875, 0.90132467, 0.50512316],
                   [0.33320528, 0.74069399, 0.36643752],
                   [0.27789568, 0.14381512, 0.13405309],
                   [0.73586202, 0.4406952, 0.52345838],
                   [0.76639731, 0.70796547, 0.70692905],
                   [0.09164532, 0.53234394, 0.88298593],
                   [0.96164975, 0.60700481, 0.22605181],
                   [0.53892635, 0.95173308, 0.22371167]])
 
local_maxima = []
 
# distance in x / y to define region of interest around current center coordinate
radius = 0.25
 
for i in range(points.shape[0]):
    # radial mask with radius radius, could be beautified via numpy.linalg
    mask = np.sqrt((points[:, 0] - points[i, 0]) ** 2 + (points[:, 1] - points[i, 1]) ** 2) <= radius
    # if current z value equals z_max in current region of interest, append to result list
    if points[i, 2] == np.max(points[mask], axis=0)[2]:
        local_maxima.append(tuple(points[i]))
 
print(len(local_maxima))
Добавлено через 3 часа 28 минут
Думаю локальный максимум не сможет подойти, т.к. объекты могут различаться почти в 2 раза, и два маленьких не смогут быть распознаны из за ограничения радиуса поиска максимума
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
05.07.2021, 15:43  [ТС]
u235, Ещё я использовал триангуляцию не на 2D а на 3D, и тут она получше работает, думаю есть шансы на поиск лок макс, надо только понять как отбросить лишнее

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np
import scipy.spatial
import matplotlib.tri as mtri
import matplotlib.pyplot as plt
 
t = np.array(arr)
 
x = [i[0] for i in t]
y = [i[1] for i in t]
 
# Create the Delaunay tessalation using scipy.spatial
pts = np.vstack([x, y]).T
tess = scipy.spatial.Delaunay(pts)
 
# Create the matplotlib Triangulation object
x = tess.points[:, 0]
y = tess.points[:, 1]
tri = tess.vertices # or tess.simplices depending on scipy version
triang = mtri.Triangulation(x=pts[:, 0], y=pts[:, 1], triangles=tri)
 
# Plotting
z = [i[2] for i in t]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(triang, z)
plt.show()
Python
1
2
arr = [[-0.2384903,   0.28638432, -0.52100003], [-0.23179091,  0.28418559, -0.51700002], [-0.22692253,  0.28418559, -0.51700002], [-0.22046956,  0.28528494, -0.51899999], [-0.21518661,  0.28638432, -0.52100003], [-0.24017692,  0.28570513, -0.52200001], [-0.23345869,  0.28351582, -0.51800001], [-0.22813963,  0.2829685 , -0.51700002], [-0.22370311,  0.28351582, -0.51800001], [-0.21967019,  0.28461046, -0.51999998], [-0.21518661,  0.28515781, -0.52100003], [-0.20773969,  0.28844177, -0.52700001], [-0.24017692,  0.28447627, -0.52200001], [-0.23345869,  0.28229637, -0.51800001], [-0.22813963,  0.2817514 , -0.51700002], [-0.22370311,  0.28229637, -0.51800001], [-0.21967019,  0.2833863 , -0.51999998], [-0.21518661,  0.2839313 , -0.52100003], [-0.21025782,  0.2855662 , -0.52399999], [-0.20728272,  0.28829107, -0.52899998], [-0.24017692,  0.2832474 , -0.52200001], [-0.23345869,  0.28107692, -0.51800001], [-0.22813963,  0.28053431, -0.51700002], [-0.22370311,  0.28107692, -0.51800001], [-0.21967019,  0.28216215, -0.51999998], [-0.21559964,  0.2832474 , -0.52200001], [-0.21149139,  0.28433263, -0.52399999], [-0.20813387,  0.28650311, -0.528     ], [-0.2384903 ,  0.28147828, -0.52100003], [-0.23223924,  0.27985747, -0.51800001], [-0.22736145,  0.27985747, -0.51800001], [-0.22248366,  0.27985747, -0.51800001], [-0.21886614,  0.28147828, -0.52100003], [-0.21437077,  0.28201854, -0.52200001], [-0.21065907,  0.28363932, -0.52499998], [-0.20806641,  0.28688093, -0.53100002], [-0.23513117,  0.27917593, -0.51899999], [-0.22980034,  0.27863803, -0.51800001], [-0.22492255,  0.27863803, -0.51800001], [-0.22089435,  0.27971384, -0.51999998], [-0.2168285 ,  0.28078968, -0.52200001], [-0.21272496,  0.28186548, -0.52399999], [-0.20937686,  0.28401713, -0.528     ], [-0.23726379,  0.27902526, -0.52100003], [-0.23101979,  0.27741858, -0.51800001], [-0.22657856,  0.27795413, -0.51899999], [-0.2221185 ,  0.27848968, -0.51999998], [-0.21805736,  0.27956081, -0.52200001], [-0.21395853,  0.28063191, -0.52399999], [-0.21061985,  0.28277415, -0.528     ], [-0.23986355,  0.27939834, -0.52399999], [-0.2331359 ,  0.27726552, -0.51999998], [-0.22780037,  0.27673233, -0.51899999], [-0.22334266,  0.27726552, -0.51999998], [-0.21928623,  0.27833195, -0.52200001], [-0.2151921 ,  0.27939834, -0.52399999], [-0.21186284,  0.28153116, -0.528     ], [-0.24821244,  0.28347325, -0.53399998], [-0.23649032,  0.27710308, -0.52200001], [-0.23068759,  0.27604137, -0.51999998], [-0.22579097,  0.27604137, -0.51999998], [-0.22131916,  0.27657224, -0.52100003], [-0.21765925,  0.27816477, -0.52399999], [-0.21394286,  0.27975733, -0.52700001], [-0.2113596 ,  0.28294241, -0.53299999], [-0.23908537,  0.27745968, -0.52499998], [-0.23235775,  0.27534573, -0.52100003], [-0.22701513,  0.27481721, -0.51999998], [-0.22254567,  0.27534573, -0.52100003], [-0.21889282,  0.2769312 , -0.52399999], [-0.21518349,  0.27851669, -0.52700001], [-0.21221546,  0.28115916, -0.53200001], [-0.24215232,  0.27832832, -0.52899998], [-0.23448093,  0.27517149, -0.523     ], [-0.22867822,  0.27411922, -0.52100003], [-0.22420168,  0.27464536, -0.52200001], [-0.22012639,  0.27569762, -0.52399999], [-0.2168348 ,  0.27780219, -0.528     ], [-0.21346787,  0.27990676, -0.53200001], [-0.24090698,  0.27708298, -0.52899998], [-0.23369569,  0.27446405, -0.52399999], [-0.22788828,  0.27341649, -0.52200001], [-0.22382711,  0.27446405, -0.52399999], [-0.2197283 ,  0.27551164, -0.52600002], [-0.21640843,  0.27760676, -0.52999997], [-0.24398335,  0.27792337, -0.53299999], [-0.23582595,  0.27427336, -0.52600002], [-0.22955606,  0.27270905, -0.523     ], [-0.22506068,  0.27323048, -0.52399999], [-0.22180675,  0.27531621, -0.528     ], [-0.21806682,  0.27688052, -0.53100002], [-0.24272859,  0.27666861, -0.53299999], [-0.23503365,  0.27355415, -0.52700001], [-0.2287614 ,  0.27199691, -0.52399999], [-0.22468143,  0.27303508, -0.52600002], [-0.22139922,  0.27511137, -0.52999997], [-0.21804171,  0.27718768, -0.53399998], [-0.23592561,  0.27334695, -0.52899998], [-0.22963455,  0.2717968 , -0.52600002], [-0.22553572,  0.27283023, -0.528     ], [-0.2222347 ,  0.27489713, -0.53200001], [-0.23681759,  0.27313037, -0.53100002], [-0.23050767,  0.27158725, -0.528     ], [-0.22639001,  0.27261597, -0.52999997], [-0.22307016,  0.27467346, -0.53399998], [-0.23181739,  0.27188031, -0.53100002], [-0.22767147,  0.27290433, -0.53299999], [-0.23143575,  0.27164957, -0.53299999], [-0.15836202,  0.20225762, -0.53200001], [-0.16369571,  0.19987172, -0.52899998], [-0.15781427,  0.19873824, -0.52600002], [-0.15286115,  0.19873824, -0.52600002], [-0.14987638,  0.20138304, -0.53299999], [-0.15937662,  0.19637353, -0.523     ], [-0.15415643,  0.19599806, -0.52200001], [-0.15038459,  0.19749996, -0.52600002], [-0.16307028,  0.19514231, -0.523     ], [-0.15784303,  0.19476919, -0.52200001], [-0.15292757,  0.19476919, -0.52200001], [-0.14914631,  0.19626168, -0.52600002], [-0.1461121 ,  0.19887352, -0.53299999], [-0.16152962,  0.19354033, -0.52200001], [-0.15661416,  0.19354033, -0.52200001], [-0.15169871,  0.19354033, -0.52200001], [-0.14790803,  0.1950234 , -0.52600002], [-0.14431379,  0.19687723, -0.53100002], [-0.17176128,  0.19415353, -0.52700001], [-0.16553271,  0.19267987, -0.523     ], [-0.16030075,  0.19231147, -0.52200001], [-0.1553853 ,  0.19231147, -0.52200001], [-0.15046984,  0.19231147, -0.52200001], [-0.14639089,  0.19341669, -0.52499998], [-0.14306374,  0.19562718, -0.53100002], [-0.17019708,  0.19254684, -0.52600002], [-0.16430149,  0.19144866, -0.523     ], [-0.15876716,  0.19071655, -0.52100003], [-0.15415643,  0.1910826 , -0.52200001], [-0.14924098,  0.1910826 , -0.52200001], [-0.14487849,  0.19181471, -0.52399999], [-0.14154661,  0.19401105, -0.52999997], [-0.1689588 ,  0.19130856, -0.52600002], [-0.16275848,  0.18985374, -0.52200001], [-0.15754065,  0.18949004, -0.52100003], [-0.15263461,  0.18949004, -0.52100003], [-0.14801211,  0.18985374, -0.52200001], [-0.14364491,  0.19058114, -0.52399999], [-0.14029891,  0.19276336, -0.52999997], [-0.1689588 ,  0.19007028, -0.52600002], [-0.16307028,  0.18898622, -0.523     ], [-0.15784303,  0.18862487, -0.52200001], [-0.15292757,  0.18862487, -0.52200001], [-0.14801211,  0.18862487, -0.52200001], [-0.14364491,  0.18934756, -0.52399999], [-0.13976949,  0.19079297, -0.528     ], [-0.17365846,  0.18990897, -0.52899998], [-0.16708279,  0.18811399, -0.52399999], [-0.16152962,  0.18739601, -0.52200001], [-0.15661416,  0.18739601, -0.52200001], [-0.15169871,  0.18739601, -0.52200001], [-0.14678325,  0.18739601, -0.52200001], [-0.14241134,  0.18811399, -0.52399999], [-0.1385265 ,  0.18954998, -0.528     ], [-0.17523443,  0.18902027, -0.52999997], [-0.1689588 ,  0.18759372, -0.52600002], [-0.16307028,  0.18652378, -0.523     ], [-0.15784303,  0.18616715, -0.52200001], [-0.15292757,  0.18616715, -0.52200001], [-0.14801211,  0.18616715, -0.52200001], [-0.14364491,  0.18688042, -0.52399999], [-0.13924006,  0.18759372, -0.52600002], [-0.13607402,  0.1900902 , -0.5329999 ],
[-0.1720872,  0.187064,  -0.528    ], [-0.16584921,  0.18564685, -0.52399999], [-0.16060784,  0.18529256, -0.523     ], [-0.15568297,  0.18529256, -0.523     ], [-0.15046984,  0.18493828, -0.52200001], [-0.14583322,  0.18529256, -0.523     ], [-0.14144719,  0.18600113, -0.52499998], [-0.13728351,  0.187064  , -0.528     ], [-0.17748109,  0.18758068, -0.53299999], [-0.17052064,  0.18546908, -0.52700001], [-0.16461564,  0.18441328, -0.52399999], [-0.15937662,  0.18406135, -0.523     ], [-0.15445175,  0.18406135, -0.523     ], [-0.14924098,  0.18370942, -0.52200001], [-0.144602  ,  0.18406135, -0.523     ], [-0.14047834,  0.18511715, -0.52600002], [-0.13629817,  0.18617294, -0.52899998], [-0.17748109,  0.18632592, -0.53299999], [-0.17052064,  0.18422845, -0.52700001], [-0.16461564,  0.1831797 , -0.52399999], [-0.15937662,  0.18283013, -0.523     ], [-0.15445175,  0.18283013, -0.523     ], [-0.14924098,  0.18248055, -0.52200001], [-0.14487849,  0.1831797 , -0.52399999], [-0.14047834,  0.18387887, -0.52600002], [-0.13604052,  0.18457802, -0.528     ], [-0.13255797,  0.1866755 , -0.53399998], [-0.1720872 ,  0.18333504, -0.528     ], [-0.16616572,  0.18229335, -0.52499998], [-0.16091492,  0.18194613, -0.52399999], [-0.15568297,  0.18159891, -0.523     ], [-0.15075809,  0.18159891, -0.523     ], [-0.14611206,  0.18194613, -0.52399999], [-0.14144719,  0.18229335, -0.52499998], [-0.1370235 ,  0.18298781, -0.52700001], [-0.13306333,  0.18437672, -0.53100002], [-0.26706914,  0.18416127, -0.53399998], [-0.26204069,  0.18416127, -0.53399998], [-0.17748109,  0.1838164 , -0.53299999], [-0.17084421,  0.18209205, -0.528     ], [-0.16492979,  0.18105743, -0.52499998], [-0.15968135,  0.18071256, -0.52399999], [-0.15474706,  0.18071256, -0.52399999], [-0.14981277,  0.18071256, -0.52399999], [-0.14487849,  0.18071256, -0.52399999], [-0.14047834,  0.18140231, -0.52600002], [-0.13604052,  0.18209205, -0.528     ], [-0.13206151,  0.18347153, -0.53200001], [-0.2673213 ,  0.18221913, -0.53200001], [-0.26231168,  0.18221913, -0.53200001], [-0.2577857 ,  0.18256164, -0.53299999], [-0.17781407,  0.18290415, -0.53399998], [-0.17116777,  0.18119157, -0.52899998], [-0.16492979,  0.1798215 , -0.52499998], [-0.15968135,  0.17947899, -0.52399999], [-0.15474706,  0.17947899, -0.52399999], [-0.14981277,  0.17947899, -0.52399999], [-0.14515497,  0.1798215 , -0.52499998], [-0.14047834,  0.18016403, -0.52600002], [-0.13604052,  0.18084906, -0.528     ], [-0.13206151,  0.18221913, -0.53200001], [-0.27233092,  0.18096672, -0.53200001], [-0.26431872,  0.18062657, -0.53100002], [-0.25980687,  0.18096672, -0.53200001], [-0.25527618,  0.18130688, -0.53299999], [-0.1746433 ,  0.18096672, -0.53200001], [-0.16835823,  0.17960607, -0.528     ], [-0.16245794,  0.17858557, -0.52499998], [-0.15751423,  0.17858557, -0.52499998], [-0.15257053,  0.17858557, -0.52499998], [-0.14734563,  0.17824541, -0.52399999], [-0.1429549 ,  0.17892575, -0.52600002], [-0.13826414,  0.17926591, -0.52700001], [-0.13380748,  0.17994623, -0.52899998], [-0.27712605,  0.18038993, -0.53399998], [-0.27056898,  0.17937651, -0.53100002], [-0.26556877,  0.17937651, -0.53100002], [-0.26056857,  0.17937651, -0.53100002], [-0.25653094,  0.18005212, -0.53299999], [-0.25198378,  0.18038993, -0.53399998], [-0.16867709,  0.17870088, -0.52899998], [-0.16245794,  0.17734965, -0.52499998], [-0.15751423,  0.17734965, -0.52499998], [-0.15257053,  0.17734965, -0.52499998], [-0.14762682,  0.17734965, -0.52499998], [-0.1429549 ,  0.17768747, -0.52600002], [-0.13826414,  0.17802528, -0.52700001], [-0.13406042,  0.17903869, -0.52999997], [-0.27838316,  0.17913281, -0.53399998], [-0.27181903,  0.17812646, -0.53100002], [-0.26631632,  0.17779099, -0.52999997], [-0.26181862,  0.17812646, -0.53100002], [-0.25730206,  0.17846191, -0.53200001], [-0.25324089,  0.17913281, -0.53399998], [-0.16774825,  0.17779099, -0.52999997], [-0.16152911,  0.17644919, -0.52600002], [-0.1562783 ,  0.17611372, -0.52499998], [-0.15162287,  0.17644919, -0.52600002], [-0.14666975,  0.17644919, -0.52600002], [-0.14171662,  0.17644919, -0.52600002], [-0.13728351,  0.17712009, -0.528     ], [-0.13306333,  0.17812646, -0.53100002], [-0.27608814,  0.17720951, -0.53200001], [-0.27005941,  0.17654329, -0.52999997], [-0.26506862,  0.17654329, -0.52999997], [-0.26056857,  0.17687641, -0.53100002], [-0.25604965,  0.17720951, -0.53200001], [-0.16995253,  0.1775426 , -0.53299999], [-0.16307683,  0.17554401, -0.52700001], [-0.15781427,  0.17521091, -0.52600002], [-0.15286115,  0.17521091, -0.52600002], [-0.14790803,  0.17521091, -0.52600002], [-0.14322668,  0.17554401, -0.5270000 ]]
Миниатюры
Группировка точек  
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
06.07.2021, 07:28
RSAX, не нужна вам триангуляция 3d.
вот смотрите код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import numpy as np
from scipy import interpolate
from scipy.ndimage import maximum_filter
 
#  симуляция сканированных данных
def generate_points():
    x_min,x_max=0.0,0.3
    y_min,y_max=-0.05,0.2
    x=np.linspace(x_min, x_max, 1000)
    y=np.linspace(y_min, y_max, 1000)
    X,Y=np.meshgrid(x, y)
    num_points=5
    peaks_pos=((0.17,0.1), (0.19, 0.15), (0.1, 0.1), (0.24, 0.15), (0.25, 0.09))
    peaks_param=((0.3, 0.018), (0.25, 0.02), (0.32, 0.01), (0.28, 0.02),(0.33, 0.01))
    Z=0.1*X-0.15*Y
    for i in range(num_points):
        Z=Z+peaks_param[i][0]*np.exp(-((X-peaks_pos[i][0])**2+(Y-peaks_pos[i][1])**2)/(2*peaks_param[i][1]**2))
    # ax.plot_surface( X, Y, Z, cmap=cm.coolwarm)
    x_rnd=(x_max-x_min)*np.random.random(size=(100000,))+x_min
    y_rnd=(y_max-y_min)*np.random.random(size=(100000,))+y_min
    point = np.vstack((y_rnd, x_rnd))
    z_rnd=interpolate.interpn((y, x), Z, point.T)
    # ax.scatter(x_rnd,y_rnd,z_rnd)
    return((x_rnd, y_rnd, z_rnd))
    
 
# нерегулярный набор точек (исходные данные)
x,y,z=generate_points()
x_min=np.min(x)
x_max=np.max(x)
y_min=np.min(y)
y_max=np.max(y)
 
# преобразование в регулярные сетки (интерполяция):
x_grid, y_grid=np.meshgrid(np.linspace(x_min, x_max, 1000), np.linspace(y_min, y_max, 1000))
z_grid = interpolate.griddata((x, y), z, (x_grid, y_grid), method='cubic') #, fill_value=0.0
# тут можно сделать фильтрацию  z_grid для удаления ВЧ шумов
 
z_max=maximum_filter(z_grid, size=5)
pos=np.argwhere(z_grid == z_max)
print('положения максимумов:')
print(x_grid[0, pos[:,1]], y_grid[ pos[:,0],0])
Большая часть кода-генерация данных (раз вы своими данными не делитесь).
Далее нерегулярные наборы точек интерполируются в регулярные сетки.
z_grid - по сути картинка (осторожно! есть nanы по краям)
Ищем максимумы и все. (добавляется один ложный максимум с края связанный с наклоном "стола", который можно отфильтровать)
Все просто, главное перейти из наборов точек к регулярной картинке-матрице.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2021, 07:28
Помогаю со студенческими работами здесь

Группировка списка
Подскажите, пожалуйста, как мне сгруппировать такой список? ,,,,,] Что бы получилось Москва Значение1 Значение2 ...

Группировка в Pandas
Добрый день! Подскажите как выполнить группировку данных фрейма import pandas as pd, numpy as np np.random.seed(10) df =...

Группировка словаря
Помогите сгруппировать словарь с агрегированием в список from itertools import groupby works = # требуется #}, # ...

Группировка данных в массиве
Всем доброго дня Имеется вот такой массив: a = Надо объединить данные(для примера тут one,two,three) по именам, то есть в итоге...

Группировка логических операций в питоне
здравствуйте стал гуглить по сабжу как-то игнорирует первое слово, можете дать пример именно группировки логических операций в питоне ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru