feat: extend type adaptation to support cv::cuda::GpuMat #519
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Extended
ROSCvMatContainerto support type adaptation forcv::cuda::GpuMat.Internally I changed the frame type to a
std::variantso the user can store eithercv::Matorcv::cuda::GpuMat. The user is responsible for checking the stored type first viaholds_cv_type.The use case here is for a pipeline that can use hardware acceleration across all nodes. Being able to pass
cv::cuda::GpuMatis thus a requirement. The reasoning for having it type adapted together withcv::Matis for interoperability.The constructors from cv types were also condensed to a "pass by value and move" in order to have only 2 constructors (
cv::Matandcv::cuda::Mat) instead of 4(cv::Mat const &; cv::Mat &&; cv::cuda::GpuMat const &; cv::cuda::GpuMat &&)Warning
Usage of cv::cuda::GpuMat requires building of OpenCV with the CUDA module. I am not aware of this package being built with such module in mind but I am fine with it being a requirement that you pull & build the package as part of your workspace. Let me know your thoughts on this.
Example usage
creating a subscriber:
getting the info:
publishing: