将图像opencvc++发送到python

2024-10-01 11:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python打开图片,发送到C++函数进行处理,然后返回图片。如何正确地从c++函数中获取图片?在

分段错误

代码示例:

C++ +/H1>
// t_lib.cpp 
#include "opencv2/opencv.hpp"

extern "C" unsigned char*  getfg(int rows,int cols, unsigned char* fdata)
//extern "C" void getfg(int rows,int cols, unsigned char* fdata)
{
    cv::Mat frame = cv::Mat(rows, cols, CV_8UC3, (void *) fdata);
    // Work 
    //cv::imshow("Display window C++", frame);
    //cv::waitKey(0);

    // do something

    return frame.data; //fdata;
}

Python 2.7

^{pr2}$

汇编:

g++ -c -fPIC t_lib.cpp -o lib -lX11 $(pkg-config opencv --cflags --libs) -I/usr/include/python2.7 -I/usr/lib/python2.7;

g++ -shared -Wl,-soname,lib.so -o lib.so lib -lopencv_core -lopencv_highgui -lopencv_imgproc

用于查看opencv libs的命令:

pkg-config opencv --cflags --libs

输出:

-I/usr/include/opencv -lopencv_shape -lopencv_stitching 
-lopencv_superres -lopencv_videostab -lopencv_aruco 
-lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib
-lopencv_datasets -lopencv_dpm -lopencv_face 
-lopencv_freetype -lopencv_fuzzy -lopencv_hdf 
-lopencv_line_descriptor -lopencv_optflow -lopencv_video 
-lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo 
-lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd 
-lopencv_viz -lopencv_surface_matching -lopencv_text 
-lopencv_ximgproc -lopencv_calib3d -lopencv_features2d 
-lopencv_flann -lopencv_xobjdetect -lopencv_objdetect 
-lopencv_ml -lopencv_xphoto -lopencv_highgui 
-lopencv_videoio -lopencv_imgcodecs -lopencv_photo 
-lopencv_imgproc -lopencv_core

c++OpenCV 3.2.0版


Tags: includelibusr图片frameopencvcvlibs