C++opencv4+cuda+图像直接拼接(横向、纵向拼接)的cv::cuda::GpuMat操作


前言

现在的opencv+cuda可以实现很多操作,但是在图像操作中,hconcat,vconcat这两个操作却没有办法用cv::cuda::GpuMat操作实现,那么为了不在gpu操作过程中,硬生生转成cv::Mat,拼接之后再转回去,就需要新的方法来完成这一操作。


一、操作代码

代码如下:

cv::cuda::Stream stream_test;
cv::Mat A_mat;
cv::Mat B_mat;
cv::cuda::GpuMat A_cuda_mat;//你自己初始化或者从哪拿图我就不管了,但是要保证AB横宽一至或者高一至,如果你要横向或者纵向拼接
cv::cuda::GpuMat B_cuda_mat;//你自己初始化或者从哪拿图我就不管了,但是要保证AB横宽一至或者高一至,如果你要横向或者纵向拼接
cv::cuda::GpuMat get_AB_cuda_mat;
A_cuda_mat.upload(A_mat, stream_test);
B_cuda_mat.upload(B_mat, stream_test);
int a_w = A_cuda_mat.cols;
int b_w = B_cuda_mat.cols;
int a_h = A_cuda_mat.rows;
int b_h = B_cuda_mat.rows;
if(a_w = b_w)
{
	get_AB_cuda_mat = cv::cuda::GpuMat(cv::Size(a_w, a_h + b_h), CV_8UC1, cv::Scalar(170));//格式或者颜色啥的自己定
	A_cuda_mat.copyTo(get_AB_cuda_mat (cv::Rect(0, 0, a_w, a_h )), stream_test);
	B_cuda_mat.copyTo(get_AB_cuda_mat (cv::Rect(0, a_h, a_w, b_h)), stream_test);
}
stream_test.waitForCompletion();
//以上是拿横宽一至,纵向拼接举例,横向拼接你们自己举一反三吧,代码是我在这里直接手打的,有错误可以说一下。

总结

以上就完成了在cv::cuda::GpuMat格式下的图像拼接操作。

另外,在cv::cuda之类的操作中,加上cv::cuda::Stream可以有效加速。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Jetson是一款由NVIDIA开发的嵌入式计算平台,它具有高性能的GPU和专门用于AI和机器学习的硬件加速功能。而OpenCV(Open Source Computer Vision Library)是一个广泛使用的计算机视觉库,它提供了丰富的图像和视频处理功能。 当在Jetson上使用OpenCV时,有时会遇到"import cv2 Modulenotfounderror: no module named 'cv2'"的错误。这个错误通常表示系统没有找到cv2模块,导致无法引入OpenCV库。 解决此问题的方法如下: 1. 检查OpenCV是否正确安装:首先,确保已在Jetson上正确安装了OpenCV库。可以通过在终端中运行"sudo apt-get install python3-opencv"命令来安装。 2. 检查Python环境:确保在使用OpenCV的Python脚本中使用的是正确的Python解释器。有时候系统中同时存在多个Python版本,需要确保使用的是与OpenCV库相兼容的Python版本。 3. 检查库路径:打开Python交互式终端,并输入以下命令: ``` import sys print(sys.path) ``` 确保OpenCV库所在的路径在sys.path中被正确添加。 4. 检查库名称:有时候,在不同的平台上,OpenCV库的名称可能略有不同,可能是"cv2"或其他名称。请检查您的代码中是否使用了正确的库名称。 5. 重新安装OpenCV:如果以上方法都没有解决问题,可以尝试重新安装OpenCV库。可以通过重新运行安装命令,或者手动下载OpenCV源代码进行编译安装。 总之,"import cv2 Modulenotfounderror: no module named 'cv2'"错误表示系统无法找到cv2模块,导致无法引入OpenCV库。通过上述方法检查安装、Python环境、库路径等问题,可以解决此错误并成功引入cv2模块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷失的walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值