| 394 | } |
| 395 | |
| 396 | TEST(OpFindHomography, degenerate_identical_source_points) |
| 397 | { |
| 398 | int numSamples = 2; |
| 399 | int numPoints = 16; |
| 400 | |
| 401 | nvcv::Tensor srcPoints( |
| 402 | { |
| 403 | {numSamples, numPoints}, |
| 404 | "NW" |
| 405 | }, |
| 406 | nvcv::TYPE_2F32); |
| 407 | nvcv::Tensor dstPoints( |
| 408 | { |
| 409 | {numSamples, numPoints}, |
| 410 | "NW" |
| 411 | }, |
| 412 | nvcv::TYPE_2F32); |
| 413 | nvcv::Tensor models( |
| 414 | { |
| 415 | {numSamples, 3, 3}, |
| 416 | "NHW" |
| 417 | }, |
| 418 | nvcv::TYPE_F32); |
| 419 | |
| 420 | auto srcData = srcPoints.exportData<nvcv::TensorDataStridedCuda>(); |
| 421 | auto dstData = dstPoints.exportData<nvcv::TensorDataStridedCuda>(); |
| 422 | auto modelsData = models.exportData<nvcv::TensorDataStridedCuda>(); |
| 423 | |
| 424 | std::vector<float> srcVec(2 * numSamples * numPoints); |
| 425 | std::vector<float> dstVec(2 * numSamples * numPoints); |
| 426 | std::vector<float> estimatedModelsVec(numSamples * 9); |
| 427 | |
| 428 | for (int i = 0; i < numSamples; i++) |
| 429 | { |
| 430 | float fixed_src_x = 100.0f; |
| 431 | float fixed_src_y = 200.0f; |
| 432 | |
| 433 | for (int j = 0; j < numPoints; j++) |
| 434 | { |
| 435 | // All source points are identical |
| 436 | srcVec[i * numPoints * 2 + 2 * j] = fixed_src_x; |
| 437 | srcVec[i * numPoints * 2 + 2 * j + 1] = fixed_src_y; |
| 438 | |
| 439 | // Different destination points |
| 440 | dstVec[i * numPoints * 2 + 2 * j] = j * 10.0f; |
| 441 | dstVec[i * numPoints * 2 + 2 * j + 1] = j * 15.0f; |
| 442 | } |
| 443 | } |
| 444 | |
| 445 | ASSERT_EQ(cudaSuccess, cudaMemcpy(srcData->basePtr(), srcVec.data(), sizeof(float) * 2 * numPoints * numSamples, |
| 446 | cudaMemcpyHostToDevice)); |
| 447 | ASSERT_EQ(cudaSuccess, cudaMemcpy(dstData->basePtr(), dstVec.data(), sizeof(float) * 2 * numPoints * numSamples, |
| 448 | cudaMemcpyHostToDevice)); |
| 449 | |
| 450 | cudaStream_t stream; |
| 451 | ASSERT_EQ(cudaSuccess, cudaStreamCreateWithFlags(&stream, cudaStreamNonBlocking)); |
| 452 | |
| 453 | cvcuda::FindHomography fh(numSamples, numPoints); |
nothing calls this directly
no test coverage detected