I’m writting a C++ library that analyzes images using OpenCV. In order to achieve that, I’m using opencv-swig for generating python bindings of that library. However, when I call the module from python, it isn’t able to find the adequate method for the provided arguments:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/config/.local/lib/python3.10/site-packages/example.py", line 12422, in opencv_receiver
return _libReconDMI.opencv_receiver(image)
TypeError: in method 'opencv_receiver', argument 1 of type 'cv::Mat'
In C++, opencv_receiver is implemented as shown below:
#include "opencv2/core.hpp"
void opencv_receiver(cv::Mat image){
(void)image;
}
According to answers like Returning a Opencv Mat type from my Python Code , opencv-swig should be able to generate those bindings. As a consequence, I’m not sure if this problem is a result of using opencv 4.1.2 and swig 4.0.2 as it seems that passing images worked with previous versions of them.
Do you know if opencv-swig requires using a different type in order to receive images?
Is there an alternative way to interface a C++ module that requires receiving OpenCV images which supports newest versions of OpenCV? (For example using numpy.i interface to receive a numpy array containing the image and converting it to a cv::Mat object in C++)
Minimal reproducible example:
In order to reproduce this problem, a minimal project that builds the previously described function was provided here: https://github.com/renatoGarcia/opencv-swig/issues/31#issuecomment-2065932116
Platform details:
- Code server docker image: lscr.io/linuxserver/code-server:latest (https://docs.linuxserver.io/images/docker-code-server/)
- OS: Ubuntu Jammy (according to https://docs.linuxserver.io/FAQ/)
- Compiler: gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)
- Conan version: 2.2.2
- Python version: 3.10.12
- SWIG version: 4.0.2
user24849449 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.