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
ROSCvMatContainer
to support type adaptation forcv::cuda::GpuMat
.Internally I changed the frame type to a
std::variant
so the user can store eithercv::Mat
orcv::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::GpuMat
is thus a requirement. The reasoning for having it type adapted together withcv::Mat
is 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::Mat
andcv::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: