Я использую C ++ с Windows MF C и C ++ Python API.
В моем основном потоке GUI я импортирую сценарий Python, а затем создаю поток CHILD (подкласс CWinThread) и вызываю некоторые функции Python в том же сценарии, который я импортировал в основной поток выглядит так:
if (pFunc && PyCallable_Check(pFunc)) {
PyObject_CallObject(pFunc, NULL);
}
else {
std::cout << "Did not get the function";
}
Функция Python, которую я вызываю, имеет строку:
x = cv2.imread('path/test.bmp', cv2.IMREAD_UNCHANGED)
Но по какой-то странной причине она просто не может когда-либо выполнить функцию с этой строкой чтения opencv. Я на 100% уверен, что путь правильный, так как я могу отлично его запустить в своей Python IDE. Еще более странным является то, что этот вызов Python в C ++ отлично работает, если я вызываю его в потоке MAIN, в отличие от потока CHILD.
Есть ли что-то, что c указывает на вызов opencv в дочерних потоках C ++ вызывая это? Это как Python GIL или что-то в этом роде? Я не могу понять, почему именно opencv сделает это.