CUDA_TEST_P(Hog_var, HOG) { cv::cuda::GpuMat _img(c_img); cv::cuda::GpuMat d_img; int win_stride_width = 8;int win_stride_height = 8; int win_width = 16; int block_width = 8; int block_stride_width = 4;int block_stride_height = 4; int cell_width = 4; int nbins = 9; Size win_stride(win_stride_width, win_stride_height); Size win_size(win_width, win_width * 2); Size block_size(block_width, block_width); Size block_stride(block_stride_width, block_stride_height); Size cell_size(cell_width, cell_width); cv::Ptr<cv::cuda::HOG> gpu_hog = cv::cuda::HOG::create(win_size, block_size, block_stride, cell_size, nbins); gpu_hog->setNumLevels(13); gpu_hog->setHitThreshold(0); gpu_hog->setWinStride(win_stride); gpu_hog->setScaleFactor(1.05); gpu_hog->setGroupThreshold(8); gpu_hog->compute(_img, d_img); vector<float> gpu_desc_vec; ASSERT_TRUE(gpu_desc_vec.empty()); cv::Mat R(d_img); cv::HOGDescriptor cpu_hog(win_size, block_size, block_stride, cell_size, nbins); cpu_hog.nlevels = 13; vector<float> cpu_desc_vec; ASSERT_TRUE(cpu_desc_vec.empty()); cpu_hog.compute(c_img, cpu_desc_vec, win_stride, Size(0,0)); }
int main(int argc, char **argv) { int i = 0; pid_t pid; pid_t *childpids = NULL; sigset_t sigset; int status = 0; int ret = 0; checkopt(argc, argv); if (initialize()) { warn("initialize failed"); report_result("2\n"); exit(EXIT_FAILURE); } if (sigemptyset(&sigset) < 0) { warn("sigemptyset failed"); report_result("2\n"); exit(EXIT_FAILURE); } childpids = malloc((nprocs) * sizeof(pid_t)); if (childpids == NULL) { warn("alloc for child pids failed"); report_result("2\n"); exit(EXIT_FAILURE); } memset(childpids, 0, (nprocs) * sizeof(pid_t)); report_result("0\n"); sigsuspend(&sigset); for (; i < nprocs; i++) { pid = fork(); if (pid == -1) { while (--i >= 0) kill(childpids[i], SIGKILL); warn("fork test tasks failed"); report_result("2\n"); exit(EXIT_FAILURE); } else if (!pid) { ret = cpu_hog(); exit(ret); } childpids[i] = pid; } report_result("0\n"); while (!end) { if (sigemptyset(&sigset) < 0) ret = -1; else sigsuspend(&sigset); if (ret || end) { for (i = 0; i < nprocs; i++) { kill(childpids[i], SIGUSR2); } break; } else { for (i = 0; i < nprocs; i++) { kill(childpids[i], SIGUSR1); } } } for (i = 0; i < nprocs; i++) { wait(&status); if (status) ret = EXIT_FAILURE; } free(childpids); return ret; }