怎样网站seo,口碑最好的旅游软件排名,威海网络推广公司哪家好,云南网络营销seoopencv大多数只使用到了cpu的版本#xff0c;实际上对于复杂的图像处理过程用cuda#xff08;特别是高分辨率的图像#xff09;可能会有加速效果。是否需要使用cuda需要思考#xff1a;
1、opencv的cuda库是否提供了想要的算子。在CUDA-accelerated Computer Vision你可以…opencv大多数只使用到了cpu的版本实际上对于复杂的图像处理过程用cuda特别是高分辨率的图像可能会有加速效果。是否需要使用cuda需要思考
1、opencv的cuda库是否提供了想要的算子。在CUDA-accelerated Computer Vision你可以看到cv的cuda库提供了哪些方法。2、如果要使用cv的cuda库会涉及到数据从cpu和gpu之间的交换。一张图片首先会被cpu读取到内存中然后通过api将cpu中的数据搬运到gpu中而cpu和gpu之间的数据搬运也是很耗时的比如gpu_dst.download(dst_cpu)将gpu_dst数据搬运到dst_cpu数据是8976*4960*3耗时约37ms如果你的图像处理比较简单说不定数据搬运的耗时比直接在cpu上运行更长。
1、带cuda的opencv安装
这里的前提是你的nvidia驱动、cuda以及cudnn都安装完成可以正常使用。
首先下载版本一致的opencv和opencv-contribcuda库所在包然后解压待用。
然后查询你显卡的Compute Capability进入opencv-4.8.1后创建build文件夹终端在build中打开后执行
cmake \
-D CMAKE_BUILD_TYPERELEASE \
-D BUILD_CUDA_STUBSON \
-D WITH_CUDAON \
-D CUDA_ARCH_BIN8.9 \
-D OPENCV_EXTRA_MODULES_PATH../../opencv_contrib-4.8.1/modules .. 注意CUDA_ARCH_BIN是你查询到自己显卡的Compute CapabilityOPENCV_EXTRA_MODULES_PATH指向你的opencv_contrib-4.8.1/modules。最后的..不能省略 可以看到成功检测到我的11.8的cuda但是没有cuDNN。不知道是不是新版的原因我安装好cudnn后通过命令cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2查询cudnn版本没有任何输出但是确实存在cudnn.h并在在使用cuda时也没有问题就没有后面在opencv使用cuda也没有报错。
然后:sudo make –j15表示使用15个线程make因cpu而异。 最后sudo make install。
后续的操作参考ubuntu20.04opencvvscode添加环境变量。
2、测试
编写c代码测试
#include opencv2/opencv.hpp
#include opencv2/core/cuda.hppint main()
{cv::cuda::printCudaDeviceInfo(cv::cuda::getDevice());int count cv::cuda::getCudaEnabledDeviceCount();printf(GPU Device Count : %d \n, count);return 0;
}如果是不支持cuda的cv则会报错error: (-216:No CUDA support) The library is compiled without CUDA support in function throw_no_cuda
3、在gpu上旋转图像
实际上在gpu上使用cv总体分为三步1将内存中的数据搬运到gpu上2使用cuda方法进行图像处理3将处理结果搬运到cpu上
下面是一个将图像逆时针旋转90度的代码其中Timer类是一个计时器从创建起计时到离开作用域被销毁时的耗时。对于4960*8976\的图像进行测试RGB指3通道Gray指单通道测量upload、rotate和download三个阶段的耗时
RGB(ms)Gray(ms)upload93rotate43download3712
可以看到对于简单的操作实际上耗时在数据的上传和下载。
#include opencv2/opencv.hpp
#include opencv2/cudawarping.hpp
#include timer.hint main(int argc, char *argv[])
{if (argc ! 2){ // 检查是否传入图片路径std::cout 参数错误 std::endl;}// 以灰度图模式读取输入图像cv::Mat src cv::imread(argv[1]);if (src.empty()){std::cerr Failed to read input image! std::endl;return -1;}cv::Mat dst_cpu; // 在cpu创建一个Mat接受处理后的图像结果cv::cuda::GpuMat gpu_src, gpu_dst; // 在gpu创建两个Mat分别储存旋转前后的图像因为旋转前后尺寸不一样所以必须要两个Matgpu_dst.create(8976, 4960, CV_8UC3); // 定义旋转后图像尺寸的Matcv::Mat colorImage(8976, 4960, CV_8UC3); // 在cpu创建Mat一个将灰度图转为RGB图的Mat{{Timer time(upload);gpu_src.upload(src); // 将cpu上的src搬运到gpu的gpu_src中}{Timer time(rotate); // 计时器从此刻计时直到离开作用域被销毁// 逆时针旋转90度将4960*8976转8976*4960流程是按左上角旋转后向下平移8976然后用8976*4960的Mat接受cv::cuda::rotate(gpu_src, gpu_dst, gpu_dst.size(), 90, 0, 8976);}// 将gpu的gpu_dst数据搬运到dst_cpu中好像只有gpu的数据才有方法{Timer time(download);gpu_dst.download(dst_cpu); // gpu到cpu搬运数据很耗时RGB数据耗时37msGray数据耗时12ms}}return 0;
}# CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
set(CMAKE_BUILD_TYPE Debug)
project(MyProject)# 添加可执行文件
add_executable(draft draft.cpp src/timer.cpp)# 设置包含目录
target_include_directories(draft PRIVATE src)# 查找 OpenCV 库
find_package(OpenCV REQUIRED)# 将 OpenCV 库链接到可执行文件
target_link_libraries(draft PRIVATE ${OpenCV_LIBS} opencv_cudawarping) 文章转载自: http://www.morning.lznqb.cn.gov.cn.lznqb.cn http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.grjh.cn.gov.cn.grjh.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn http://www.morning.thnpj.cn.gov.cn.thnpj.cn http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn http://www.morning.ranglue.com.gov.cn.ranglue.com http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn http://www.morning.bmmyx.cn.gov.cn.bmmyx.cn http://www.morning.ggtkk.cn.gov.cn.ggtkk.cn http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn http://www.morning.c7513.cn.gov.cn.c7513.cn http://www.morning.zhengdaotang.cn.gov.cn.zhengdaotang.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.dfndz.cn.gov.cn.dfndz.cn http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn http://www.morning.pbygt.cn.gov.cn.pbygt.cn http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn http://www.morning.flfxb.cn.gov.cn.flfxb.cn http://www.morning.rtkz.cn.gov.cn.rtkz.cn http://www.morning.fpzpb.cn.gov.cn.fpzpb.cn http://www.morning.gsksm.cn.gov.cn.gsksm.cn http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn http://www.morning.mehrim.com.gov.cn.mehrim.com http://www.morning.rkxdp.cn.gov.cn.rkxdp.cn http://www.morning.wskn.cn.gov.cn.wskn.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.pghry.cn.gov.cn.pghry.cn http://www.morning.tnzwm.cn.gov.cn.tnzwm.cn http://www.morning.mjzgg.cn.gov.cn.mjzgg.cn http://www.morning.yrpg.cn.gov.cn.yrpg.cn http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn http://www.morning.qcsbs.cn.gov.cn.qcsbs.cn http://www.morning.rftk.cn.gov.cn.rftk.cn http://www.morning.zffn.cn.gov.cn.zffn.cn http://www.morning.qxlyf.cn.gov.cn.qxlyf.cn http://www.morning.kzbpx.cn.gov.cn.kzbpx.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.pbdnj.cn.gov.cn.pbdnj.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.brnwc.cn.gov.cn.brnwc.cn http://www.morning.qxmnf.cn.gov.cn.qxmnf.cn http://www.morning.rmltt.cn.gov.cn.rmltt.cn http://www.morning.lgkbn.cn.gov.cn.lgkbn.cn http://www.morning.hkshy.cn.gov.cn.hkshy.cn http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn http://www.morning.pghfy.cn.gov.cn.pghfy.cn http://www.morning.drnfc.cn.gov.cn.drnfc.cn http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.trwkz.cn.gov.cn.trwkz.cn http://www.morning.sjli222.cn.gov.cn.sjli222.cn http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn http://www.morning.flhnd.cn.gov.cn.flhnd.cn http://www.morning.nbsbn.cn.gov.cn.nbsbn.cn http://www.morning.prmbn.cn.gov.cn.prmbn.cn http://www.morning.ffrys.cn.gov.cn.ffrys.cn http://www.morning.lwrks.cn.gov.cn.lwrks.cn http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.ktcfl.cn.gov.cn.ktcfl.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.qgjwx.cn.gov.cn.qgjwx.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn http://www.morning.kflbf.cn.gov.cn.kflbf.cn http://www.morning.lywcd.cn.gov.cn.lywcd.cn http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn