提交 e838803e 编写于 作者: G Gines Hidalgo

Fixed 4k images with many people not rendering skeletons

上级 98e53de1
......@@ -407,7 +407,10 @@ OpenPose Library - Release Notes
4. Natural sort now works properly with filenames containining numbers longer than the limit of an int.
5. Optionally auto-generated bin folder only contains the required DLLs (depending on the CMake configuration), instead of all of them.
6. When WrapperStructFace and WrapperStructHand are not called and configured for Wrapper, setting body to CPU rendering was not working.
7. Skelton rendering: All or some skeletons were not properly displayed or completely missing on images with many people.
7. Skeleton rendering bugs:
1. All or some skeletons were not properly displayed or completely missing on images with many people (e.g., videos with about 32 people).
2. All or some skeletons were not properly displayed or completely missing on images where the multiplication of people and image resolution was too big (e.g., videos with about 32 people on 4k resolution).
3. Flag `output_resolution` was not working with GPU resize, redirected to CPU in those cases.
4. Changes/additions that affect the compatibility with the OpenPose Unity Plugin:
......
......@@ -10,7 +10,7 @@ namespace op
Array<float>& frameArray, const Array<float>& faceKeypoints, const float renderThreshold);
void renderFaceKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
const float* const facePtr, const int numberPeople, const float renderThreshold,
const float alphaColorToAdd = FACE_DEFAULT_ALPHA_KEYPOINT);
}
......
......@@ -19,7 +19,7 @@ namespace op
}
OP_API void getNumberCudaThreadsAndBlocks(
dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<int>& frameSize);
dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<unsigned int>& frameSize);
template <typename T>
void reorderAndNormalize(
......
......@@ -10,7 +10,7 @@ namespace op
Array<float>& frameArray, const std::array<Array<float>, 2>& handKeypoints, const float renderThreshold);
void renderHandKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
const float* const handsPtr, const int numberHands, const float renderThreshold,
const float alphaColorToAdd = HAND_DEFAULT_ALPHA_KEYPOINT);
}
......
......@@ -13,32 +13,32 @@ namespace op
void renderPoseKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const PoseModel poseModel,
const int numberPeople, const Point<int>& frameSize, const float* const posePtr,
const int numberPeople, const Point<unsigned int>& frameSize, const float* const posePtr,
const float renderThreshold, const bool googlyEyes = false, const bool blendOriginalFrame = true,
const float alphaBlending = POSE_DEFAULT_ALPHA_KEYPOINT);
void renderPoseHeatMapGpu(
float* frame, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
float* frame, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
const float scaleToKeepRatio, const unsigned int part,
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
void renderPoseHeatMapsGpu(
float* frame, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
float* frame, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio,
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
void renderPosePAFGpu(
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio, const int part,
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
void renderPosePAFsGpu(
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio,
const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
void renderPoseDistanceGpu(
float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
const float scaleToKeepRatio, const unsigned int part, const float alphaBlending = POSE_DEFAULT_ALPHA_HEAT_MAP);
}
......
......@@ -4,10 +4,10 @@
namespace op
{
__inline__ __device__ void getBoundingBoxPerPerson(
float* maxPtr, float* minPtr, float* scalePtr,const int targetWidth, const int targetHeight,
float* maxPtr, float* minPtr, float* scalePtr,const unsigned int targetWidth, const unsigned int targetHeight,
const float* const keypointsPtr, const int numberPeople, const int numberParts, const float threshold)
{
const auto globalIdx = threadIdx.x;
const unsigned long globalIdx = threadIdx.x;
// Fill shared parameters
if (globalIdx < numberPeople)
......@@ -18,10 +18,10 @@ namespace op
float maxValueY = 0.f;
for (auto part = 0 ; part < numberParts ; part++)
{
const auto index = 3 * (globalIdx*numberParts + part);
const auto x = keypointsPtr[index];
const auto y = keypointsPtr[index+1];
const auto score = keypointsPtr[index+2];
const unsigned long index = 3u * (globalIdx*numberParts + part);
const float x = keypointsPtr[index];
const float y = keypointsPtr[index+1];
const float score = keypointsPtr[index+2];
if (score > threshold)
{
if (x < minValueX)
......@@ -62,7 +62,7 @@ namespace op
__inline__ __device__ void renderKeypoints(
float* targetPtr, float* sharedMaxs, float* sharedMins, float* sharedScaleF, const float* const maxPtr,
const float* const minPtr, const float* const scalePtr, const int globalIdx, const int x, const int y,
const int targetWidth, const int targetHeight, const float* const keypointsPtr,
const unsigned int targetWidth, const unsigned int targetHeight, const float* const keypointsPtr,
const unsigned int* const partPairsPtr, const int numberPeople, const int numberParts,
const int numberPartPairs, const float* const rgbColorsPtr, const int numberColors, const float radius,
const float lineWidth, const float* const keypointScalePtr, const int numberScales, const float threshold,
......@@ -82,7 +82,7 @@ namespace op
// Fill each (x,y) target pixel
if (x < targetWidth && y < targetHeight)
{
const auto baseIndex = 3*(y * targetWidth + x);
const unsigned long baseIndex = 3u*(y * (unsigned long)targetWidth + x);
float b = targetPtr[baseIndex];
float g = targetPtr[baseIndex+1];
float r = targetPtr[baseIndex+2];
......@@ -208,7 +208,7 @@ namespace op
__inline__ __device__ void renderKeypointsOld(
float* targetPtr, float2* sharedMaxs, float2* sharedMins, float* sharedScaleF, const int globalIdx,
const int x, const int y, const int targetWidth, const int targetHeight, const float* const keypointsPtr,
const int x, const int y, const unsigned int targetWidth, const unsigned int targetHeight, const float* const keypointsPtr,
const unsigned int* const partPairsPtr, const int numberPeople, const int numberParts,
const int numberPartPairs, const float* const rgbColorsPtr, const int numberColors, const float radius,
const float lineWidth, const float* const keypointScalePtr, const int numberScales, const float threshold,
......@@ -224,10 +224,10 @@ namespace op
float maxValueY = 0.f;
for (auto part = 0 ; part < numberParts ; part++)
{
const auto index = 3 * (globalIdx*numberParts + part);
const auto x = keypointsPtr[index];
const auto y = keypointsPtr[index+1];
const auto score = keypointsPtr[index+2];
const unsigned long index = 3u * (((unsigned long)globalIdx)*numberParts + part);
const float x = keypointsPtr[index];
const float y = keypointsPtr[index+1];
const float score = keypointsPtr[index+2];
if (score > threshold)
{
if (x < minValueX)
......@@ -263,7 +263,7 @@ namespace op
// Fill each (x,y) target pixel
if (x < targetWidth && y < targetHeight)
{
const auto baseIndex = 3*(y * targetWidth + x);
const unsigned long baseIndex = 3u*(y * (unsigned long)targetWidth + x);
float b = targetPtr[baseIndex];
float g = targetPtr[baseIndex+1];
float r = targetPtr[baseIndex+2];
......
......@@ -83,7 +83,7 @@ namespace op
// I prefer std::round(T&) over positiveIntRound(T) for std::atomic
const auto elementRendered = spElementToRender->load();
const auto numberPeople = faceKeypoints.getSize(0);
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
if (numberPeople > 0 && elementRendered == 0)
{
// Draw faceKeypoints
......
......@@ -46,7 +46,7 @@ namespace op
}
void renderFaceKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
const float* const facePtr, const int numberPeople, const float renderThreshold, const float alphaColorToAdd)
{
try
......
......@@ -8,16 +8,11 @@
namespace op
{
#ifdef USE_CUDA
#ifdef DNDEBUG
#define base 32
#else
#define base 64
#endif
const dim3 THREADS_PER_BLOCK_TINY{base, base, 1}; // 32 |64
const dim3 THREADS_PER_BLOCK_SMALL{2*base, 2*base, 1}; // 64 |128
const dim3 THREADS_PER_BLOCK_MEDIUM{4*base, 4*base, 1}; // 128|256
const dim3 THREADS_PER_BLOCK_BIG{8*base, 8*base, 1}; // 256|512
const dim3 THREADS_PER_BLOCK_HUGE{16*base, 16*base, 1}; // 512|1024
const dim3 THREADS_PER_BLOCK_TINY {32, 32, 1};
const dim3 THREADS_PER_BLOCK_SMALL {64, 64, 1};
const dim3 THREADS_PER_BLOCK_MEDIUM{128, 128, 1};
const dim3 THREADS_PER_BLOCK_BIG {256, 256, 1};
const dim3 THREADS_PER_BLOCK_HUGE {256, 256, 1};
#endif
void cudaCheck(const int line, const std::string& function, const std::string& file)
......@@ -65,7 +60,7 @@ namespace op
}
}
void getNumberCudaThreadsAndBlocks(dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<int>& frameSize)
void getNumberCudaThreadsAndBlocks(dim3& numberCudaThreads, dim3& numberCudaBlocks, const Point<unsigned int>& frameSize)
{
try
{
......@@ -93,8 +88,8 @@ namespace op
else
numberCudaThreads = THREADS_PER_BLOCK_TINY;
// numberCudaBlocks
numberCudaBlocks = dim3{getNumberCudaBlocks((unsigned int)frameSize.x, numberCudaThreads.x),
getNumberCudaBlocks((unsigned int)frameSize.y, numberCudaThreads.y),
numberCudaBlocks = dim3{getNumberCudaBlocks(frameSize.x, numberCudaThreads.x),
getNumberCudaBlocks(frameSize.y, numberCudaThreads.y),
numberCudaThreads.z};
#else
UNUSED(numberCudaThreads);
......
......@@ -84,7 +84,7 @@ namespace op
// I prefer std::round(T&) over positiveIntRound(T) for std::atomic
const auto elementRendered = spElementToRender->load();
const auto numberPeople = handKeypoints[0].getSize(0);
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
// GPU rendering
if (numberPeople > 0 && elementRendered == 0)
{
......
......@@ -46,7 +46,7 @@ namespace op
}
void renderHandKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<int>& frameSize,
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const Point<unsigned int>& frameSize,
const float* const handsPtr, const int numberHands, const float renderThreshold, const float alphaColorToAdd)
{
try
......
......@@ -110,7 +110,7 @@ namespace op
const auto hasBkg = addBkgChannel(mPoseModel);
const auto numberBodyPartsPlusBkg = numberBodyParts + (hasBkg ? 1 : 0);
const auto numberBodyPAFChannels = getPosePartPairs(mPoseModel).size();
const Point<int> frameSize{outputData.getSize(1), outputData.getSize(0)};
const Point<unsigned int> frameSize{(unsigned int)outputData.getSize(1), (unsigned int)outputData.getSize(0)};
// Draw poseKeypoints
if (elementRendered == 0)
{
......
......@@ -119,7 +119,7 @@ namespace op
}
__global__ void getBoundingBoxPerPersonPose(
float* maxPtr, float* minPtr, float* scalePtr,const int targetWidth, const int targetHeight,
float* maxPtr, float* minPtr, float* scalePtr,const unsigned int targetWidth, const unsigned int targetHeight,
const float* const keypointsPtr, const int numberPeople, const int numberParts, const float threshold)
{
getBoundingBoxPerPerson(
......@@ -127,9 +127,9 @@ namespace op
}
__global__ void renderPoseCoco(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -159,9 +159,9 @@ namespace op
}
__global__ void renderPoseBody19(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -192,9 +192,9 @@ namespace op
}
__global__ void renderPoseBody23(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -257,9 +257,9 @@ namespace op
}
__global__ void renderPoseBody25b(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -289,9 +289,9 @@ namespace op
}
__global__ void renderPoseBody135(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -321,9 +321,9 @@ namespace op
}
__global__ void renderPoseMpi29Parts(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool blendOriginalFrame,
const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -353,9 +353,9 @@ namespace op
}
__global__ void renderPoseCar12(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -385,9 +385,9 @@ namespace op
}
__global__ void renderPoseCar22(
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const int targetWidth, const int targetHeight,
const float* const posePtr, const int numberPeople, const float threshold, const bool googlyEyes,
const bool blendOriginalFrame, const float alphaColorToAdd)
float* targetPtr, float* minPtr, float* maxPtr, float* scalePtr, const unsigned int targetWidth,
const unsigned int targetHeight, const float* const posePtr, const int numberPeople, const float threshold,
const bool googlyEyes, const bool blendOriginalFrame, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -416,10 +416,10 @@ namespace op
blendOriginalFrame, (googlyEyes ? 6 : -1), (googlyEyes ? 7 : -1));
}
__global__ void renderBodyPartHeatMaps(float* targetPtr, const int targetWidth, const int targetHeight,
const float* const heatMapPtr, const int widthHeatMap,
const int heightHeatMap, const float scaleToKeepRatio,
const int numberBodyParts, const float alphaColorToAdd)
__global__ void renderBodyPartHeatMaps(
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap, const float scaleToKeepRatio,
const int numberBodyParts, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -451,10 +451,10 @@ namespace op
}
}
__global__ void renderBodyPartHeatMap(float* targetPtr, const int targetWidth, const int targetHeight,
const float* const heatMapPtr, const int widthHeatMap,
const int heightHeatMap, const float scaleToKeepRatio, const unsigned int part,
const float alphaColorToAdd, const bool absValue = false)
__global__ void renderBodyPartHeatMap(
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap, const float scaleToKeepRatio,
const unsigned int part, const float alphaColorToAdd, const bool absValue = false)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -479,10 +479,10 @@ namespace op
}
}
__global__ void renderPartAffinities(float* targetPtr, const int targetWidth, const int targetHeight,
const float* const heatMapPtr, const int widthHeatMap,
const int heightHeatMap, const float scaleToKeepRatio,
const int partsToRender, const int initPart, const float alphaColorToAdd)
__global__ void renderPartAffinities(
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
const float scaleToKeepRatio, const int partsToRender, const int initPart, const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -546,10 +546,11 @@ namespace op
}
}
__global__ void renderDistance(float* targetPtr, const int targetWidth, const int targetHeight,
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
const float scaleToKeepRatio, const int part, const int numberBodyParts,
const int numberBodyPAFChannels, const float alphaColorToAdd)
__global__ void renderDistance(
float* targetPtr, const unsigned int targetWidth, const unsigned int targetHeight,
const float* const heatMapPtr, const int widthHeatMap, const int heightHeatMap,
const float scaleToKeepRatio, const int part, const int numberBodyParts, const int numberBodyPAFChannels,
const float alphaColorToAdd)
{
const auto x = (blockIdx.x * blockDim.x) + threadIdx.x;
const auto y = (blockIdx.y * blockDim.y) + threadIdx.y;
......@@ -580,7 +581,7 @@ namespace op
error("Alpha must be in the range [0, 1].", __LINE__, __FUNCTION__, __FILE__);
}
inline void renderPosePAFGpuAux(float* framePtr, const PoseModel poseModel, const Point<int>& frameSize,
inline void renderPosePAFGpuAux(float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize,
const float* const heatMapPtr, const Point<int>& heatMapSize,
const float scaleToKeepRatio, const int part, const int partsToRender,
const float alphaBlending)
......@@ -607,7 +608,7 @@ namespace op
void renderPoseKeypointsGpu(
float* framePtr, float* maxPtr, float* minPtr, float* scalePtr, const PoseModel poseModel,
const int numberPeople, const Point<int>& frameSize, const float* const posePtr,
const int numberPeople, const Point<unsigned int>& frameSize, const float* const posePtr,
const float renderThreshold, const bool googlyEyes, const bool blendOriginalFrame, const float alphaBlending)
{
try
......@@ -747,9 +748,9 @@ namespace op
}
}
void renderPoseHeatMapGpu(float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio, const unsigned int part,
const float alphaBlending)
void renderPoseHeatMapGpu(
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio, const unsigned int part, const float alphaBlending)
{
try
{
......@@ -772,7 +773,7 @@ namespace op
}
}
void renderPoseHeatMapsGpu(float* framePtr, const PoseModel poseModel, const Point<int>& frameSize,
void renderPoseHeatMapsGpu(float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize,
const float* const heatMapPtr, const Point<int>& heatMapSize,
const float scaleToKeepRatio, const float alphaBlending)
{
......@@ -800,7 +801,7 @@ namespace op
}
void renderPosePAFGpu(
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio, const int part, const float alphaBlending)
{
try
......@@ -815,7 +816,7 @@ namespace op
}
void renderPosePAFsGpu(
float* framePtr, const PoseModel poseModel, const Point<int>& frameSize, const float* const heatMapPtr,
float* framePtr, const PoseModel poseModel, const Point<unsigned int>& frameSize, const float* const heatMapPtr,
const Point<int>& heatMapSize, const float scaleToKeepRatio, const float alphaBlending)
{
try
......@@ -833,7 +834,7 @@ namespace op
}
void renderPoseDistanceGpu(
float* framePtr, const Point<int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
float* framePtr, const Point<unsigned int>& frameSize, const float* const heatMapPtr, const Point<int>& heatMapSize,
const float scaleToKeepRatio, const unsigned int part, const float alphaBlending)
{
try
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册