170 похожих чатов

Доброго времени суток. Я из главной программы в качестве отдельного

процесса вызываю еще одну программу. И мне необходимо передать в дочерний процесс cv::Mat. Каким образом это возможно реализовать? Я думал, что возможно передать указатель на начало нужного куска памяти, его ширина-высота и собрать в дочернем процессе новый объект с этими вводными.

25 ответов

7 просмотров

для общения между процессами сериализация потребуется почти без вариантов. потоками никак не разрулить?

Уточните еще вашу ОС

Ivan-Foshin Автор вопроса

ubuntu

shared memory тебе в помощь

Viktor Chyzhdzenka
shared memory тебе в помощь

В разделяемых процессах лучше использовать не общую виртуальную память, а сокеты. На loopback интерфейс все будет достаточно быстро приходить/уходить

Ivan Foshin
ubuntu

Если только fork, тогда можно передать указатель, примерно так, как вы написали. Если fork + exec, то shared memory, как подсказали выше

Не совсем понял, но насколько я понял, тебе надо передать из одной программы объект в другую программу. А другая эта программа сама не сумеет построить требуемый объект? Тебе нужно по сути ведь той другой программе передать не сам конкретный объект, а объект, наполненный какими то данными, так ведь. Значит тебе надо той программе просто передать информацию, какими данными наполнить объект. То есть та программа сама создаст объект, тебе нужно ей только передать информацию как этот объект наполнить. В идеале, если сам объект умеет сам себя строить, допустим он имеет какой то конструктор, при вызове которого, объект создается с требуемым наполнением. Тогда той программе ты просто не передаешь готовый объект, а всего лишь передаешь информацию какой конструктор вызвать, она тогда сама сможет создать объект, а конструктор наполнит данными.

Ivan-Foshin Автор вопроса
The Pressbraker
Не совсем понял, но насколько я понял, тебе надо п...

я использую библиотеку, которая требуется для обработки изображений. Я из нескольких изображений собираю одно большое, нарезаю по кусочками и хочу обрабатывать несколько штук парралельно, но библиотека позволяет создавать только один объект обработки в процессе, независимо от того, сколько потоков существует, и буду ли я создавать объект обработки в каждом потоке отдельно - об этом пишут сами авторы либы. Я решил обойти это ограничение путем создания дочерних процессов и в каждый дочерний отправлять тот кусочек, который нужно обработать. Но как ненакладно по ресурсам отправить? - вопрос еще открытый

Ivan Foshin
я использую библиотеку, которая требуется для обра...

процесс синтеза этой информации в виде, пригодном для передачи по каналу, называется сериализацией, обратный - десериализацией :) это уже обсудили

Ivan Foshin
я использую библиотеку, которая требуется для обра...

а в документации к cv не указаны технические причины, по которым так сделано?

Ivan-Foshin Автор вопроса
Ivan Sokolov
процесс синтеза этой информации в виде, пригодном ...

с этим не спорю, осталось устранить последнее препятсвие - собственные пробелы в знаниях

Ivan-Foshin Автор вопроса
Ivan Sokolov
а в документации к cv не указаны технические причи...

как они говорят, сделали её потокобезопасной, чтобы объектом обработки мог пользоваться только один поток

потому что.

а что такое "объект обработки"? может вам их просто несколько нужно? (очень мало работал с CV, простите)

Ivan Foshin
я использую библиотеку, которая требуется для обра...

Ну создай по обработчику в каждом потоке и каждому отдай свой кусок матрицы. Насколько память мне позволяет в opencv это возможно, главное матрицу не изменяй в этих потоках.

Ivan-Foshin Автор вопроса
Ivan Sokolov
а что такое "объект обработки"? может вам их прост...

cv тут по сути нужно как обертка для работы с изображениями. Я получаю видеопоток из нескольких источников покадрово, после чего из них делаю общее полотно (несколько камер стоят рядом друг с другом) и согласно ТЗ отрезаю от него по нужным координатам кусочки и отправляю на обработку в zxing. А в одном процессе zxing можно обрабатывать только одно изображение

Ivan-Foshin Автор вопроса
Viktor Chyzhdzenka
Ну создай по обработчику в каждом потоке и каждому...

Мы с Вами такой вариант обсуждали и пробовали - он не работает

Ivan Foshin
Мы с Вами такой вариант обсуждали и пробовали - он...

Ну тогда только через процессы и разделяемую память. Если входной объект корежить не будешь, то с разделяемой памятью всё просто. Если будешь, то ...

Ivan-Foshin Автор вопроса
Viktor Chyzhdzenka
Ну тогда только через процессы и разделяемую памят...

нет, входной объект не буду корежить. Как раз ищу информацию по использованию с fork-exec

Ivan-Foshin Автор вопроса
Ivan Foshin
cv тут по сути нужно как обертка для работы с изоб...

А где там в коде такое ограничение на одно изображение?

Alexey Petrunyaka
А где там в коде такое ограничение на одно изображ...

У него там юзаемые сторонние либы с глобальным локом на горы глобальных внутренних переменных и могут только в один поток в одном процессе.

Viktor Chyzhdzenka
У него там юзаемые сторонние либы с глобальным лок...

Так я уже эту стороннюю либу нашёл и смотрю её код, поэтому и спрашиваю

Alexey Petrunyaka
Так я уже эту стороннюю либу нашёл и смотрю её код...

А я ему поверил. При запуске в некольких потоках, вызовы выстраюваются в цепочку линейную.

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
1
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Hey there Which is the best Linux destro for developers (coding)? To my research on reddit, they said Linux mint is good for mid level spec and Ubuntu for high Lev hardwar...
Wiz 🪄
11
Карта сайта