Ошибка OpenCV (4.8.0): функция/функция не реализована () в cv::debug_build_guard::_OutputArray::assignC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка OpenCV (4.8.0): функция/функция не реализована () в cv::debug_build_guard::_OutputArray::assign

Сообщение Anonymous »

Я пытаюсь перевести код Python на C++ и натыкаюсь на этот код:

Код: Выделить всё

self.net = cv.dnn.readNetFromDarknet(cfg_file, weights_file)
self.net.setPreferableBackend(cv.dnn.DNN_BACKEND_OPENCV)
self.ln = self.net.getLayerNames()
self.ln = [self.ln[i-1] for i in self.net.getUnconnectedOutLayers()]
...
blob = cv.dnn.blobFromImage(img, 1/255.0, (416, 416), swapRB=True, crop=False)
self.net.setInput(blob)
outputs = self.net.forward(self.ln)
outputs = np.vstack(outputs)
Как видите, код пересылает выходные данные из сети из имен несвязанных слоев, указанных в self.ln. Вот мой код на C++:

Код: Выделить всё

static Mat blobFromImg;
bool swapRB = true;
blobFromImage(img, blobFromImg, 1/255.0, Size(416, 416), Scalar(), swapRB, false);
network.setInput(blobFromImg);
Mat outMat;
network.forward(outMat , network.getUnconnectedOutLayersNames());
vconcat(outMat, outMat);
Как видите, я использую cv::vconcat вместо np.vstack вместо создания нового std::vector для передачи в network.forward(). Я использую getUnconnectedOutLayersNames(). Тем не менее, я получаю эту ошибку:

Ошибка OpenCV(4.8.0): функция/функция не реализована () в cv::debug_build_guard::_OutputArray::assign, file D:\vcpkg\buildtrees\opencv4\src\4.8.0-2bf495557d.clean\modules\core\src\matrix_wrap.cpp, строка 2052

Строка, в которой возникает исключение, — network.forward(). Именно из-за этого метода network.getUnconnectedOutLayersNames() сам по себе не выдает исключение.
Если да:

Код: Выделить всё

std::vector ln;
auto layers = network.getLayerNames();
for (auto i : network.getUnconnectedOutLayers()){
ln.push_back(layers[i-1]);
}
...
network.setInput(blobFromImg);
Mat outMat;
network.forward(outMat , ln);
vconcat(outMat, outMat);
Я получаю тот же результат.
Почему функция не реализована? Почему в Python есть такая реализация.
Примечание: я использую darknet/yolo.

Подробнее здесь: https://stackoverflow.com/questions/786 ... vdebug-bui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»