我正在尝试从v软件的DLLImport remoteApi.dll中获取simxGetVisionSensorImage函数.下面是函数描述的链接:http://www.coppeliarobotics.com/helpFiles/en/remoteApiFunctions.htm#simxGetVisionSensorImage
下面是上面链接中对此函数的简要描述:
描述:检索视觉传感器的图像。如果以前没有调用simHandleVisionSensor,返回的数据就没有意义(如果视觉传感器没有被标记为显式处理,则在主脚本中默认调用simHandleVisionSensor)。使用simxGetLastCmdTime函数验证检索到的数据的“新鲜度”。
C简介: simxInt simxGetVisionSensorImage(simxInt clientID,simxInt sensorHandle,simxInt*分辨率,simxUChar**图像,simxUChar选项,simxInt operationMode)
C参数:
clientID:客户机ID.。请参阅simxStart。
视觉传感器的sensorHandle:手柄
分辨率:指向接收图像分辨率的2个simxInt值的指针
图像:指向图像数据指针的指针。
选项:图像选项,位编码: bit0集:每个图像像素是一个字节(灰度图像),否则每个图像像素都是一个rgb字节三重奏。
operationMode:是一种远程API函数操作模式.
下面是我导入它的方式(simxGetVisionSensorImage函数):
[DllImport("remoteApi.dll", CallingConvention = CallingConvention.Cdecl)]
public extern static simx_error simxGetVisionSensorImage(int clientID, int sensorHandle, out int resolution, out IntPtr image, char option, simx_opmode opmode);我就是这样称呼它的:
int intResolution = 0;
char option = '\0';
IntPtr imageIntPtr= IntPtr.Zero;
simxGetVisionSensorImage(intClientID, intCamera1Handle, out intResolution, out imageIntPtr, option, simx_opmode.streaming);它成功运行,intResolution为128,运行后也验证了imageIntPtr。但是,我不知道如何将"imageIntPtr“变量转换为图像或位图。
如果有人能帮我做这件事我真的很感激。
发布于 2015-07-24 18:45:17
最简单的方法是从它构建一个新的Bitmap。
var bmp = new Bitmap(bitmapWidth, bitmapHeight, 3 * bitmapWidth,
PixelFormat.Format24bppRgb, ptrFromApi);https://stackoverflow.com/questions/31617442
复制相似问题