nvds_obj_enc_process is a better method because it is simple to use and will do HW acceleration. please refer to the following code:
nvds_obj_enc_process (ctx, &objData, ip_surf, obj_meta, frame_meta);
if(1){
NvDsObjectMeta newMeta;
NvDsObjEncUsrArgs userData = { 0 };
/* To be set by user */
userData.saveImg = save_img;
/* Set if Image scaling Required */
userData.scaleImg = FALSE;
userData.scaledWidth = 0;
userData.scaledHeight = 0;
/* Preset */
userData.objNum = num_rects;
/* Quality */
userData.quality = 80;
newMeta.rect_params.width = frame_meta->source_frame_width;
newMeta.rect_params.height = frame_meta->source_frame_height;
newMeta.rect_params.top = 0.0f;
newMeta.rect_params.left = 0.0f;
static int i = 1;
char sbuf[32] = {0};
sprintf(userData.fileNameImg, "%d.jpg", i++);
/*Main Function Call */
nvds_obj_enc_process (ctx, &userData, ip_surf, &newMeta, frame_meta);
}