Opencv使用cuda实现图像处理

main.py

python 复制代码
import os
import cv2
print(f'OpenCV: {cv2.__version__} for python installed and working')
image = cv2.imread('bus.jpg')
if image is None:
    print("无法加载图像1")
print(cv2.cuda.getCudaEnabledDeviceCount())
cv2.cuda.setDevice(0)
cv2.cuda.printCudaDeviceInfo(0)
image_gpu = cv2.cuda_GpuMat()
image_gpu.upload(image)
screenshot = cv2.cuda.cvtColor(image_gpu, cv2.COLOR_RGB2BGR)
screenshot = cv2.cuda.resize(image_gpu, (400, 400))
result_cpu = screenshot.download()
print("图像宽度: ", image.shape)
print("数据类型:", image.dtype)
print("在CPU下,原始图像格式:", type(image))
print("在GPU下,处理后的图像格式:", type(screenshot))
print("在CPU下,处理后的图像格式:", type(result_cpu))
print("图像宽度: ", result_cpu.shape)
print("数据类型:", result_cpu.dtype)
if result_cpu is None:
    print("无法加载图像2")
else:
    cv2.imshow("Window", result_cpu)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

main.cpp

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
int main(int argc, char* argv[])
{
	cv::Mat h_img1 = cv::imread("bus.jpg");
	cv::cuda::GpuMat d_result1, d_result2, d_result3, d_result4, d_img1;
	d_img1.upload(h_img1);
	cv::cuda::cvtColor(d_img1, d_result1, cv::COLOR_BGR2GRAY);
	cv::cuda::cvtColor(d_img1, d_result2, cv::COLOR_BGR2RGB);
	cv::cuda::cvtColor(d_img1, d_result3, cv::COLOR_BGR2HSV);
	cv::cuda::cvtColor(d_img1, d_result4, cv::COLOR_BGR2YCrCb);
	cv::Mat h_result1, h_result2, h_result3, h_result4;
	d_result1.download(h_result1);
	d_result2.download(h_result2);
	d_result3.download(h_result3);
	d_result4.download(h_result4);
	cv::imshow("Gray处理结果:", h_result1);
	cv::imshow("RGB处理结果:", h_result2);
	cv::imshow("HSV处理结果:", h_result3);
	cv::imshow("YCrCb处理结果:", h_result4);
	cv::waitKey(0);
	return 0;
}

CMakeLists.txt

bash 复制代码
cmake_minimum_required(VERSION 3.10)
project(OpenCVCuda LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set("OpenCV_DIR" "E:\\Opencv gpu\\newbuild\\install")
set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}\\include)
set(OpenCV_LIB_DEBUG ${OpenCV_DIR}\\x64\\vc17\\lib\\opencv_world470d.lib) 
set(OpenCV_LIB_RELEASE ${OpenCV_DIR}\\x64\\vc17\\lib\\opencv_world470.lib)   
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CUDA_ARCHITECTURES 86)		
find_package(CUDA REQUIRED)			
enable_language(CUDA)  
include_directories(${OpenCV_INCLUDE_DIRS}) 
link_directories(${OpenCV_LIB_DIRS})  
find_package(OpenCV QUIET)	
link_libraries(${OpenCV_LIBS})
add_executable(OpenCVCuda main.cpp)
target_link_libraries(${PROJECT_NAME} 
    $<$<CONFIG:Debug>:${OpenCV_LIB_DEBUG}>
    $<$<CONFIG:Release>:${OpenCV_LIB_RELEASE}>
)
target_compile_features(OpenCVCuda PRIVATE cxx_std_14)
相关推荐
春哥的研究所23 分钟前
AI人工智能名片小程序源码系统,名片小程序+分销商城+AI客服,包含完整搭建教程
人工智能·微信小程序·小程序
ahead~27 分钟前
【大模型入门】访问GPT_API实战案例
人工智能·python·gpt·大语言模型llm
喜欢吃豆27 分钟前
深入企业内部的MCP知识(三):FastMCP工具转换(Tool Transformation)全解析:从适配到增强的工具进化指南
java·前端·人工智能·大模型·github·mcp
pany34 分钟前
写代码的节奏,正在被 AI 改写
前端·人工智能·aigc
我爱一条柴ya1 小时前
【AI大模型】神经网络反向传播:核心原理与完整实现
人工智能·深度学习·神经网络·ai·ai编程
万米商云1 小时前
企业物资集采平台解决方案:跨地域、多仓库、百部门——大型企业如何用一套系统管好百万级物资?
大数据·运维·人工智能
新加坡内哥谈技术1 小时前
Google AI 刚刚开源 MCP 数据库工具箱,让 AI 代理安全高效地查询数据库
人工智能
慕婉03071 小时前
深度学习概述
人工智能·深度学习
大模型真好玩1 小时前
准确率飙升!GraphRAG如何利用知识图谱提升RAG答案质量(额外篇)——大规模文本数据下GraphRAG实战
人工智能·python·mcp
19891 小时前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法