Opencv利用cuda实现图像处理

打印 上一主题 下一主题

主题 1536|帖子 1536|积分 4608

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
main.py
  1. import os
  2. import cv2
  3. print(f'OpenCV: {cv2.__version__} for python installed and working')
  4. image = cv2.imread('bus.jpg')
  5. if image is None:
  6.     print("无法加载图像1")
  7. print(cv2.cuda.getCudaEnabledDeviceCount())
  8. cv2.cuda.setDevice(0)
  9. cv2.cuda.printCudaDeviceInfo(0)
  10. image_gpu = cv2.cuda_GpuMat()
  11. image_gpu.upload(image)
  12. screenshot = cv2.cuda.cvtColor(image_gpu, cv2.COLOR_RGB2BGR)
  13. screenshot = cv2.cuda.resize(image_gpu, (400, 400))
  14. result_cpu = screenshot.download()
  15. print("图像宽度: ", image.shape)
  16. print("数据类型:", image.dtype)
  17. print("在CPU下,原始图像格式:", type(image))
  18. print("在GPU下,处理后的图像格式:", type(screenshot))
  19. print("在CPU下,处理后的图像格式:", type(result_cpu))
  20. print("图像宽度: ", result_cpu.shape)
  21. print("数据类型:", result_cpu.dtype)
  22. if result_cpu is None:
  23.     print("无法加载图像2")
  24. else:
  25.     cv2.imshow("Window", result_cpu)
  26.     cv2.waitKey(0)
  27.     cv2.destroyAllWindows()
复制代码
main.cpp
  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. #include <opencv2/cudaimgproc.hpp>
  4. int main(int argc, char* argv[])
  5. {
  6.         cv::Mat h_img1 = cv::imread("bus.jpg");
  7.         cv::cuda::GpuMat d_result1, d_result2, d_result3, d_result4, d_img1;
  8.         d_img1.upload(h_img1);
  9.         cv::cuda::cvtColor(d_img1, d_result1, cv::COLOR_BGR2GRAY);
  10.         cv::cuda::cvtColor(d_img1, d_result2, cv::COLOR_BGR2RGB);
  11.         cv::cuda::cvtColor(d_img1, d_result3, cv::COLOR_BGR2HSV);
  12.         cv::cuda::cvtColor(d_img1, d_result4, cv::COLOR_BGR2YCrCb);
  13.         cv::Mat h_result1, h_result2, h_result3, h_result4;
  14.         d_result1.download(h_result1);
  15.         d_result2.download(h_result2);
  16.         d_result3.download(h_result3);
  17.         d_result4.download(h_result4);
  18.         cv::imshow("Gray处理结果:", h_result1);
  19.         cv::imshow("RGB处理结果:", h_result2);
  20.         cv::imshow("HSV处理结果:", h_result3);
  21.         cv::imshow("YCrCb处理结果:", h_result4);
  22.         cv::waitKey(0);
  23.         return 0;
  24. }
复制代码
CMakeLists.txt
  1. cmake_minimum_required(VERSION 3.10)
  2. project(OpenCVCuda LANGUAGES CXX)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. set("OpenCV_DIR" "E:\\Opencv gpu\\newbuild\\install")
  6. set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}\\include)
  7. set(OpenCV_LIB_DEBUG ${OpenCV_DIR}\\x64\\vc17\\lib\\opencv_world470d.lib)
  8. set(OpenCV_LIB_RELEASE ${OpenCV_DIR}\\x64\\vc17\\lib\\opencv_world470.lib)   
  9. set(CMAKE_CXX_STANDARD 14)
  10. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  11. set(CMAKE_CUDA_ARCHITECTURES 86)               
  12. find_package(CUDA REQUIRED)                       
  13. enable_language(CUDA)  
  14. include_directories(${OpenCV_INCLUDE_DIRS})
  15. link_directories(${OpenCV_LIB_DIRS})  
  16. find_package(OpenCV QUIET)       
  17. link_libraries(${OpenCV_LIBS})
  18. add_executable(OpenCVCuda main.cpp)
  19. target_link_libraries(${PROJECT_NAME}
  20.     $<$<CONFIG:Debug>:${OpenCV_LIB_DEBUG}>
  21.     $<$<CONFIG:Release>:${OpenCV_LIB_RELEASE}>
  22. )
  23. target_compile_features(OpenCVCuda PRIVATE cxx_std_14)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表