日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python和C++共享內存傳輸圖像的示例

瀏覽:40日期:2022-07-07 08:38:42

原理

python沒有辦法直接和c++共享內存交互,需要間接調用c++打包好的庫來實現

流程

C++共享內存打包成庫 python調用C++庫往共享內存存圖像數據 C++測試代碼從共享內存讀取圖像數據

實現

1.c++打包庫

創建文件

python和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; }}

CMakeLists.txt 

# cmake needs this linecmake_minimum_required(VERSION 2.8) # Define project nameproject(opencv_example_project) # Find OpenCV, you may need to set OpenCV_DIR variable# to the absolute path to the directory containing OpenCVConfig.cmake file# via the command line or GUIfind_package(OpenCV REQUIRED) # If the package has been found, several variables will# be set, you can find the full list with descriptions# in the OpenCVConfig.cmake file.# Print some message showing some of themmessage(STATUS 'OpenCV library status:')message(STATUS ' version: ${OpenCV_VERSION}')message(STATUS ' libraries: ${OpenCV_LIBS}')message(STATUS ' include path: ${OpenCV_INCLUDE_DIRS}') if(CMAKE_VERSION VERSION_LESS '2.8.11') # Add OpenCV headers location to your include paths include_directories(${OpenCV_INCLUDE_DIRS})endif() # Declare the executable target built from your sourcesadd_library(opencv_example SHARED example.cpp)add_executable(test_example test_run.cpp) # Link your application with OpenCV librariestarget_link_libraries(opencv_example ${OpenCV_LIBS})target_link_libraries(test_example ${OpenCV_LIBS})

最后生成庫

python和C++共享內存傳輸圖像的示例

2.python調用C++動態庫進行存圖

#!/usr/bin/env python import sys #sys.path.append('/usr/lib/python3/dist-packages')#sys.path.append('/home/frank/Documents/215/code/parrot-groundsdk/.python/py3/lib/python3.5/site-packages') import cv2import ctypesimport numpy as npll = ctypes.cdll.LoadLibrarylib = ll('./build/libopencv_example.so')lib.dump_.restype = ctypes.c_int count = 1#path = '/home/frank/Documents/215/2020.10.24/python_ctypes/image/' while count < 30: path = './image/'+str(count)+'.jpg' print(path) image=cv2.imread(path) #cv2.imshow('test',image) #cv2.waitKey(0) image_data = np.asarray(image, dtype=np.uint8) image_data = image_data.ctypes.data_as(ctypes.c_void_p) value = lib.dump_(0,image.shape[0], image.shape[1], image_data) print(value) count += 1 if count == 30:count = 1

3.C++讀取共享內存獲取圖像

#include <iostream>#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 cv;using namespace std; typedef struct{int rows;int cols;uchar dataPointer[image_size_max];}image_head; int main(){ int count = 1; while(true) { int shm_id = shmget(key+0,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) {perror('Share memary can’t get pointern'); return -1; } image_head image_dumper; memcpy(&image_dumper, buffer_head, sizeof(image_head)); cout<<image_dumper.rows<<' '<<image_dumper.cols<<endl; uchar* data_raw_image=image_dumper.dataPointer; cv::Mat image(image_dumper.rows, image_dumper.cols, CV_8UC3); uchar* pxvec =image.ptr<uchar>(0); int count = 0; for (int row = 0; row < image_dumper.rows; row++) { pxvec = image.ptr<uchar>(row); for(int col = 0; col < image_dumper.cols; col++) {for(int c = 0; c < 3; c++){ pxvec[col*3+c] = data_raw_image[count]; count++;} } } cv::imshow('Win',image); cv::waitKey(1); } return 1;}

以上就是python和C++共享內存傳輸圖像的示例的詳細內容,更多關于python和c++傳輸圖像的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国精品产品一区| 免费成人性网站| aa亚洲婷婷| 日韩不卡免费高清视频| 日本综合字幕| 久久精品国产99久久| 亚洲调教视频在线观看| 不卡一区综合视频| 蜜桃久久久久久| 日韩精品视频网| 69堂免费精品视频在线播放| 麻豆精品在线播放| 日韩超碰人人爽人人做人人添| 国产精品嫩模av在线| 久久女人天堂| 国产乱码午夜在线视频| 国产精品久久| 色婷婷色综合| 老司机精品久久| 青草综合视频| 久久亚洲成人| 日韩av成人高清| 黑森林国产精品av| 综合在线一区| 国内一区二区三区| 国产女优一区| 国产精品对白| 午夜性色一区二区三区免费视频| 久久伊人久久| 日本成人在线视频网站| 欧美日韩四区| 欧美久久精品| 秋霞影院一区二区三区| 91高清一区| 亚洲免费福利一区| 97视频热人人精品免费| 亚洲区欧美区| 精品91福利视频| 黑丝一区二区| 日韩精品免费一区二区夜夜嗨| 日本精品久久| 99久久夜色精品国产亚洲狼| 亚洲人成高清| 国产一区二区视频在线看| 精品一区在线| 国产探花在线精品一区二区| 国产精品1区| 极品av在线| 日韩精品免费一区二区夜夜嗨| 乱一区二区av| 国产亚洲毛片| 精品视频国产| 亚洲欧美视频| 日韩国产一区二区三区| 亚洲精品字幕| 91tv亚洲精品香蕉国产一区| 中文字幕一区二区精品区| 欧美激情国产在线| 日韩高清在线不卡| 成人av二区| 日本精品不卡| 国产三级一区| 亚洲欧美日本日韩| 91精品啪在线观看国产18| 精品亚洲二区| 91成人小视频| 美女网站久久| 婷婷精品视频| 欧美少妇精品| 久久亚洲国产精品尤物| 国产精品一页| 国产欧美在线观看免费| 日韩欧美高清一区二区三区| 亚洲成人av观看| 欧美韩日一区| av资源中文在线天堂| 亚洲精品在线a| 最新国产拍偷乱拍精品| 欧美一级精品| 亚洲福利精品| 精品成人免费一区二区在线播放| 国产一区二区三区不卡视频网站| 欧美在线日韩| 久久精品国产久精国产| 国产欧美久久一区二区三区| 国产精品亚洲产品| 久久激情av| 国产精品一区二区美女视频免费看| 日韩中文字幕无砖| 欧美成人aaa| 国产精品久久久久蜜臀| 麻豆国产91在线播放| 欧美交a欧美精品喷水| 国产一区二区三区精品在线观看| 黄色网一区二区| 日韩国产一区二区| 国产视频久久| 亚洲三级在线| 精品一区二区三区免费看| 麻豆视频在线观看免费网站黄| 成人在线观看免费视频| 成人免费电影网址| bbw在线视频| 日韩视频不卡| 日本vs亚洲vs韩国一区三区二区| 日韩精品一区二区三区免费视频 | 亚洲va久久久噜噜噜久久| 亚洲一级大片| 精品国产亚洲一区二区三区在线 | 亚洲成人一区| 亚洲欧美在线专区| 国产精品7m凸凹视频分类| 日韩制服丝袜先锋影音| 久草精品视频| 日韩在线观看一区| 香蕉精品999视频一区二区| 88久久精品| 蜜桃av.网站在线观看| 狠狠色狠狠色综合日日tαg| 亚洲色图国产| 国产精品亚洲欧美日韩一区在线| 在线观看亚洲精品福利片| jiujiure精品视频播放| 日韩欧美二区| 麻豆视频在线观看免费网站黄| 久久午夜精品| 久久午夜精品一区二区| 免费黄色成人| 国产一级一区二区| 欧美日韩四区| 成人小电影网站| а√天堂中文在线资源8| 日韩一级欧洲| 免费看欧美美女黄的网站| 亚洲日本久久| 国产免费av国片精品草莓男男| 久久国产欧美日韩精品| 国产精品1luya在线播放| 麻豆精品蜜桃视频网站| 国产一区二区三区国产精品| 在线手机中文字幕| 999久久久免费精品国产| 亚洲成av在线| 精品国产亚洲日本| 国产精品13p| 久久五月天小说| 亚洲永久av| 99久久激情| 蜜桃91丨九色丨蝌蚪91桃色| 日韩精品乱码av一区二区| 国产欧美另类| 亚洲三级欧美| 美女尤物久久精品| 久久国产精品色av免费看| 国产一区二区三区网| 视频一区视频二区中文| 国产午夜精品一区二区三区欧美 | 国产亚洲一区| 国产一区二区三区日韩精品| 欧美日韩中文一区二区| 亚洲欧美久久精品| 亚洲丝袜美腿一区| 天堂久久一区| 国产激情综合| 日韩久久视频| 国产亚洲高清视频| 久久精品xxxxx| 中文av在线全新| 亚洲网站视频| 日韩av电影一区| 欧美xxxx性| 99久久亚洲精品| 日韩精品91亚洲二区在线观看| 国产精品高清一区二区| 久久天堂精品| 色综合视频一区二区三区日韩 | 日韩中文字幕视频网| 国产激情久久| 久久精品主播| 色综合视频一区二区三区日韩| 国产一区二区久久久久| 香蕉久久国产| 精品久久影院| 奶水喷射视频一区| 久久影视三级福利片| 在线视频精品| 国产精品蜜月aⅴ在线| 亚洲网站视频| 国产欧美91| 91成人超碰| 精品视频国产| 亚洲天堂日韩在线| 日韩一区二区三区免费播放| 中文不卡在线| 在线看片福利| 日韩高清欧美激情| 午夜欧美在线| 国产a亚洲精品| 日本午夜精品久久久| 久久国产精品成人免费观看的软件|