Lua Vision Sensor Data Processing Function - Blob Detection and Color Analysis
///'function sysCall_vision(inData)//n local data={} //n ProximitySensorprevious=ProximitySensor//n ProximitySensor=sim.readProximitySensor(sensor)//n local handler = inData.handle//n if(ProximitySensorprevious<=0)and(ProximitySensor>0) then//n --local handler = inData.handle//n local packet = {}//n local data = {}//n simVision.sensorImgToWorkImg(handler)//n simVision.selectiveColorOnWorkImg(inData.handle,{1.00,0.29,0.21},{0.15,0.15,0.15},true,false,true)//n simVision.selectiveColorOnWorkImg(inData.handle,{0.28,1,0.21},{0.15,0.15,0.15},true,true,false)//n simVision.addBuffer1ToWorkImg(inData.handle)//n local _, ans=simVision.blobDetectionOnWorkImg(handler,0.1,0,false)//n packet = sim.unpackFloatTable(ans)//n local blobCount=packet[1]//n local dataSizePerBlob=packet[2]//n for i=1,blobCount,1 do//n local blobRelativeSize=packet[2+(i-1)*dataSizePerBlob+1]//n local blobOrientation=packet[2+(i-1)*dataSizePerBlob+2]//n local blobRelativePos={packet[2+(i-1)*dataSizePerBlob+3],packet[2+(i-1)dataSizePerBlob+4]}//n local realposX=cam_pos[1]+cam_x/2-cam_xpacket[2+(i-1)dataSizePerBlob+3]-0.012//n local realposY=cam_pos[2]+cam_y/2-cam_ypacket[2+(i-1)*dataSizePerBlob+4]//n local blobBoxRelativeDimensions={packet[2+(i-1)*dataSizePerBlob+5],packet[2+(i-1)*dataSizePerBlob+6]}//n local blobCol=sim.getVisionSensorImage(camera,res[1]*blobRelativePos[1],res[2]*blobRelativePos[2],1,1,0)//n if (blobCol[1]>blobCol[2])and(blobCol[1]>blobCol[3]) then//n colorCode=/'red/'//n end//n if (blobCol[2]>blobCol[1])and(blobCol[2]>blobCol[3]) then//n colorCode=/'green/'//n end//n data[i]={realposX,realposY,colorCode}//n end//n return data//n end//n return nil//nend/
原文地址: https://www.cveoy.top/t/topic/px6N 著作权归作者所有。请勿转载和采集!