这期内容当中小编将会给大家带来有关python和C++如何实现共享内存传输图像,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在大方等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站建设、外贸网站建设 网站设计制作按需制作,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸网站建设,大方网站建设费用合理。原理
python没有办法直接和c++共享内存交互,需要间接调用c++打包好的库来实现
流程
实现
1.c++打包库
创建文件
example.cpp
#include <iostream> #include <cassert> #include <stdlib.h> #include <sys/shm.h> #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "opencv2/videoio.hpp" #define key 650 #define image_size_max 1920*1080*3 using namespace std; using namespace cv; typedef struct{ int rows; int cols; uchar dataPointer[image_size_max]; }image_head; int dump(int cam_num,int row_image, int col_image, void* block_data_image) { int shm_id = shmget(key+cam_num,sizeof(image_head),IPC_CREAT); if(shm_id == -1) { cout<<"shmget error"<<endl; return -1; } cout << " shem id is "<<shm_id<<endl; image_head *buffer_head; buffer_head = (image_head*) shmat(shm_id, NULL, 0); if((long)buffer_head == -1) { cout<<"Share memary can't get pointer"<<endl; return -1; } assert(row_image*col_image*3<=image_size_max); image_head image_dumper; image_dumper.rows=row_image; image_dumper.cols=col_image; uchar* ptr_tmp_image=(uchar*) block_data_image; for (int i=0;i<row_image*col_image*3;i++) { image_dumper.dataPointer[i] = *ptr_tmp_image; ptr_tmp_image++; } memcpy(buffer_head,&image_dumper,sizeof(image_dumper)); return 1; } extern "C" { int dump_(int cam_num,int row_image, int col_image, void* block_data_image) { int result=dump(cam_num,row_image, col_image, block_data_image); return result; } }
网页题目:python和C++如何实现共享内存传输图像-创新互联
URL标题:https://www.cdcxhl.com/article34/jocse.html
成都网站建设公司_创新互联,为您提供网站收录、微信公众号、网站导航、网站内链、网站营销、做网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联