Добрый день. На лист EXCEL вставлено изображение из файла (несколько пересекающихся линий, цвет не важен). Необходимо перечислить все ячейки листа, полностью закрытые рисунком или даже частично затронутые краем рисунка. Есть ли возможность сделать это на уровне VBA? Спасибо!
Добрый день. На лист EXCEL вставлено изображение из файла (несколько пересекающихся линий, цвет не важен). Необходимо перечислить все ячейки листа, полностью закрытые рисунком или даже частично затронутые краем рисунка. Есть ли возможность сделать это на уровне VBA? Спасибо!logger
Добрый вечер, Апострофф. Спасибо, что пробуете разобраться в моём проекте. Рисунки, с которыми нужно работать, не являются графиками, соответственно я не могу применить математические методы изначально и пытаюсь, таким образом "оцифровать" изображение. Сделал рисунок в формате JPG и внёс его на лист: "Вставка - Иллюстрации - Рисунки - Это устройство". Во вложении. Ячейки листа уменьшены до квадрата с минимальным размером стороны, таким образом получилась координатная сетка. В толщину линии рисунка укладывается 2-3 ячейки и этого достаточно для точного позиционирования относительных смещений, расчёта наклона касательных и т.п.. Но с VBA я немного знаком, а с предложенным в инете вариантом написать "позиционирование указателя мыши на Питоне" разобраться точно не смогу. Если у меня будет список в варианте: "на уровне строки 55: линии1 принадлежат столбцы АА,АВ,АС; линии2 принадлежат столбцы ВА,ВВ,ВС;..." или что-то подобное, то дальше я смогу сделать нужные мне оценки. И да, Вы правы, полилиния, выбранная мною как пример - это плохой пример. Так как рисунок вносится вместе с его холстом, а это, если я правильно понимаю, усложняет задачу? Конечно же, если есть более простой способ "оцифровать" линии произвольного изображения - буду рад ликбезу!
Добрый вечер, Апострофф. Спасибо, что пробуете разобраться в моём проекте. Рисунки, с которыми нужно работать, не являются графиками, соответственно я не могу применить математические методы изначально и пытаюсь, таким образом "оцифровать" изображение. Сделал рисунок в формате JPG и внёс его на лист: "Вставка - Иллюстрации - Рисунки - Это устройство". Во вложении. Ячейки листа уменьшены до квадрата с минимальным размером стороны, таким образом получилась координатная сетка. В толщину линии рисунка укладывается 2-3 ячейки и этого достаточно для точного позиционирования относительных смещений, расчёта наклона касательных и т.п.. Но с VBA я немного знаком, а с предложенным в инете вариантом написать "позиционирование указателя мыши на Питоне" разобраться точно не смогу. Если у меня будет список в варианте: "на уровне строки 55: линии1 принадлежат столбцы АА,АВ,АС; линии2 принадлежат столбцы ВА,ВВ,ВС;..." или что-то подобное, то дальше я смогу сделать нужные мне оценки. И да, Вы правы, полилиния, выбранная мною как пример - это плохой пример. Так как рисунок вносится вместе с его холстом, а это, если я правильно понимаю, усложняет задачу? Конечно же, если есть более простой способ "оцифровать" линии произвольного изображения - буду рад ликбезу!logger
Здравствуйте, testuser2. Спасибо Вам. Разобрался. Уже интересный результат. Внёс свой рисунок на лист, "закрыл" его (вручную) сверху сплайном, напустил на сплайн тот макрос, который Вы предложили в прошлой теме - получил нужные мне координаты! Единственная проблема - много ручной работы и, соответственно, непозволительное замедление процесса обработки рисунка. Хотя отклонения координат, насколько я вижу, совершенно в пределах разумных погрешностей.
То есть хаотичный рисунок, не принадлежащий семейству стандартных иллюстраций EXCEL, никак нельзя считать с листа?
Здравствуйте, testuser2. Спасибо Вам. Разобрался. Уже интересный результат. Внёс свой рисунок на лист, "закрыл" его (вручную) сверху сплайном, напустил на сплайн тот макрос, который Вы предложили в прошлой теме - получил нужные мне координаты! Единственная проблема - много ручной работы и, соответственно, непозволительное замедление процесса обработки рисунка. Хотя отклонения координат, насколько я вижу, совершенно в пределах разумных погрешностей.
То есть хаотичный рисунок, не принадлежащий семейству стандартных иллюстраций EXCEL, никак нельзя считать с листа?logger
То есть хаотичный рисунок, не принадлежащий семейству стандартных иллюстраций EXCEL, никак нельзя считать с листа?
Рисунок можно считать в массив байтов. На сколько я знаю в VB6 есть стандартные (или полустандартные) способы это сделать, в VBA не знаю. Но имею специальной цели рекламировать какой-то внешний ресурс, но в данном случае, думаю, вам бы больше помогли в разделе Visual Basic (не VBA, а именно VB) форума, на который я уже здесь ссылался, а уже инструкции из VB6 в свою очередь можно будет "телепортировать" в VBA, какими-нибудь способами (здесь уже могу помочь я).
То есть хаотичный рисунок, не принадлежащий семейству стандартных иллюстраций EXCEL, никак нельзя считать с листа?
Рисунок можно считать в массив байтов. На сколько я знаю в VB6 есть стандартные (или полустандартные) способы это сделать, в VBA не знаю. Но имею специальной цели рекламировать какой-то внешний ресурс, но в данном случае, думаю, вам бы больше помогли в разделе Visual Basic (не VBA, а именно VB) форума, на который я уже здесь ссылался, а уже инструкции из VB6 в свою очередь можно будет "телепортировать" в VBA, какими-нибудь способами (здесь уже могу помочь я).testuser2
Сообщение отредактировал testuser2 - Суббота, 03.05.2025, 05:44
Еще вот что скажу, вот, допустим, получили вы массив пикселей, черные, белые, какие-нибудь серые и т.д., чтобы получить линию, наверное, надо будет применить какое-то интерполлирование. Но тут еще проблемма в виде пересекающихся линий, как определить к какой кривой принадлежит та или иная линия, и , возможно еще какие-то подводные камни. Есть специальные программы для векторизации изображений, скорее всего вам лучше прибегнуть к их помощи, а уже результат работы этих программ каким-то образчиком перегонять в Эксель.
Еще вот что скажу, вот, допустим, получили вы массив пикселей, черные, белые, какие-нибудь серые и т.д., чтобы получить линию, наверное, надо будет применить какое-то интерполлирование. Но тут еще проблемма в виде пересекающихся линий, как определить к какой кривой принадлежит та или иная линия, и , возможно еще какие-то подводные камни. Есть специальные программы для векторизации изображений, скорее всего вам лучше прибегнуть к их помощи, а уже результат работы этих программ каким-то образчиком перегонять в Эксель.testuser2
Сообщение отредактировал testuser2 - Суббота, 03.05.2025, 07:19
Добрый вечер, testuser2. Спасибо Вам большое за развёрнутые ответы! На счёт программы векторной графики я думал - она действительно оцифрует точечный рисунок, но представит результат в виде чертежа. А как выделить в таблицу данные тысячи небольших векторов - мне снова непонятно. Буду дальше пробовать копать инет. И да, попробую разобраться что есть VB6 :-) Вам - всего самого доброго!
Добрый вечер, testuser2. Спасибо Вам большое за развёрнутые ответы! На счёт программы векторной графики я думал - она действительно оцифрует точечный рисунок, но представит результат в виде чертежа. А как выделить в таблицу данные тысячи небольших векторов - мне снова непонятно. Буду дальше пробовать копать инет. И да, попробую разобраться что есть VB6 :-) Вам - всего самого доброго! logger
А как выделить в таблицу данные тысячи небольших векторов - мне снова непонятно.
Если оцифрует в тысячи векторов рисунок из вашего примера, то наверное это плохой векторизатор. Если ситуация получше, то можно попробовать разобраться в структуре файла векторной графики, чтобы извлечь от туда информацию об объектах и их точках.
А как выделить в таблицу данные тысячи небольших векторов - мне снова непонятно.
Если оцифрует в тысячи векторов рисунок из вашего примера, то наверное это плохой векторизатор. Если ситуация получше, то можно попробовать разобраться в структуре файла векторной графики, чтобы извлечь от туда информацию об объектах и их точках.testuser2
Сообщение отредактировал testuser2 - Воскресенье, 04.05.2025, 02:28