OpenCV CUDA模塊設備層-----“小于閾值設為零” 的圖像處理函數thresh_to_zero_func()

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

OpenCV CUDA 模塊(cudev) 中的一個仿函數生成器,用于創建一個 “小于閾值設為零” 的圖像處理函數對象。
這個函數返回一個仿函數對象(functor),用于在 GPU 上執行 “小于閾值設為 0” 的操作,即:
如果像素值小于 thresh,則設為 0;否則保留原值不變。

函數原型

 template<typename T >
__host__ __device__ ThreshToZeroFunc<T> cv::cudev::thresh_to_zero_func 	( 	T  	thresh	) 	

參數

  • T thresh 閾值,如果像素值小于該值,則設置為 0

代碼


#include <opencv2/cudev.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>// CUDA kernel 使用 functor 對圖像進行 "小于閾值設為 0" 處理
template <typename T>
__global__ void toZeroKernel(const T* input, T* output, int numPixels,cv::cudev::ThreshToZeroFunc<T> func) {int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < numPixels) {output[idx] = func(input[idx]);}
}int main() {// Step 1: 讀取圖像并轉為灰度圖cv::Mat bgr = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR);if (bgr.empty()) {std::cerr << "Failed to load image!" << std::endl;return -1;}cv::Mat src;cv::cvtColor(bgr, src, cv::COLOR_BGR2GRAY); // 灰度圖int width = src.cols;int height = src.rows;int numPixels = width * height;// Step 2: 分配 GPU 內存uchar* d_input, *d_output;cudaMalloc(&d_input, numPixels * sizeof(uchar));cudaMalloc(&d_output, numPixels * sizeof(uchar));cudaMemcpy(d_input, src.data, numPixels * sizeof(uchar), cudaMemcpyHostToDevice);// Step 3: 創建 "小于閾值設為 0" 的函數對象auto func = cv::cudev::thresh_to_zero_func<uchar>(128);// Step 4: 啟動 kernelint blockSize = 256;int numBlocks = (numPixels + blockSize - 1) / blockSize;toZeroKernel<<<numBlocks, blockSize>>>(d_input, d_output, numPixels, func);// Step 5: 下載結果cv::Mat result(height, width, CV_8U);cudaMemcpy(result.data, d_output, numPixels * sizeof(uchar), cudaMemcpyDeviceToHost);// Step 6: 顯示和保存結果cv::imshow("original image", bgr);cv::imshow("ToZero Threshold Result", result);cv::waitKey(0);cv::imwrite("tozero_result.jpg", result);// Step 7: 清理資源cudaFree(d_input);cudaFree(d_output);return 0;
}

運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87779.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87779.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87779.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字圖像處理學習筆記

1-圖像處理基礎_嗶哩嗶哩_bilibili 輸出圖像像素點需要將圖象值要作類型轉換&#xff0c;轉成Int 圖像仿射變換 線性變換平移 線性變換&#xff1a; 1&#xff0c;變換前直線&#xff0c;變換后仍然直線 2&#xff0c;直線比例不變 3&#xff0c;直線到遠點的距離不變 仿射變…

用systemd管理GreatSQL服務詳解

用systemd管理GreatSQL服務詳解 1.GreatSQL服務文件 官網 greatsql.service 文件 [Unit] DescriptionGreatSQL Server Documentationman:mysqld(8) Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.html Afternetwork.target Aftersyslog.target [Install] …

【AIGC】深度剖析AI倫理:強化隱私防線,推動算法公平性的核心議題

博客主頁&#xff1a; [小????????] 本文專欄: AIGC 文章目錄 &#x1f34a;1 人工智能興起背后的倫理及道德風險1.1 算法偏見與歧視1.2 數據隱私侵權1.3 透明度受限1.4 決策失衡1.5 AI生成內容的危險性 &#x1f34a;2 建構AIGC倫理觀&#xff1a;實現人機共創的永…

WebSocket技術全面解析:從歷史到實踐

WebSocket技術全面解析&#xff1a;從歷史到實踐 WebSocket作為一種全雙工通信協議&#xff0c;徹底改變了Web應用的實時交互模式。它于2011年被IETF正式標準化為RFC 6455&#xff0c;解決了傳統HTTP協議在實時通信中的根本缺陷。本文將深入探討WebSocket的發展歷程、技術原理、…

單用戶模式、緊急模式、救援模式有什么區別

文章目錄 **一、單用戶模式&#xff08;Single User Mode&#xff09;****功能與用途****啟動特點****進入方式** **二、緊急模式&#xff08;Emergency Mode&#xff09;****功能與用途****啟動特點****進入方式** **三、救援模式&#xff08;Rescue Mode&#xff09;****功能…

【大模型入門】訪問GPT的API

目錄 0 前言 免費訪問GPT的API Windows下環境變量的設置 1 非流式輸出 1.1 使用requests庫 1.2 使用OpenAI庫 2 流式輸出 2.1 使用requests庫 2.2 使用OpenAI庫 3 使用OpenAI庫與GPT聊天&#xff08;存儲對話歷史版&#xff09; 4 嵌入向量embeddings 4.1 創建嵌入向…

Jenkins 部署腳本

java版 #!/bin/bashAPP_NAME"springboot-demo-0.0.1-SNAPSHOT" JAR_PATH"/home/package/target/${APP_NAME}.jar" LOG_PATH"/home/package/logs/app.log"# 查找并停止舊進程 PID$(ps aux | grep "$APP_NAME.jar" | grep -v grep | awk…

NV183NV185美光固態閃存NV196NV201

美光固態閃存技術深度解析&#xff1a;NV183、NV185、NV196與NV201系列 一、技術架構與核心參數對比 1. 制程工藝與容量布局 美光NV183/NV185/NV196/NV201系列采用176層3D NAND技術&#xff0c;通過垂直堆疊提升存儲密度。其中&#xff1a; NV183&#xff1a;主打256GB容量段…

基于單片機PWM控制逆變電源設計資料集:全面掌握逆變電源設計精髓

基于單片機PWM控制逆變電源設計資料集&#xff1a;全面掌握逆變電源設計精髓 去發現同類優質開源項目:https://gitcode.com/ 項目介紹 在現代電子技術中&#xff0c;逆變電源的設計與應用占據了至關重要的位置。今天&#xff0c;我將為您介紹一個優秀的開源項目——基于單片…

Docker Buildx 構建多架構鏡像(Redis、Mysql、Java8、Nginx)

目標 ARM64 麒麟電腦無法直接拉取 Redis 鏡像&#xff0c;需在 Windows x86 電腦上通過 多架構構建工具&#xff08;如 Docker Buildx&#xff09; 生成適配 ARM64 的 Redis 鏡像&#xff0c;再打包傳輸到目標設備。 一、核心問題&#xff1a;跨架構鏡像兼容性 直接保存的 redi…

代理IP的安全陷阱:如何避免中間人攻擊與IP池污染?

在跨境業務、數據采集等場景中&#xff0c;代理IP已成為剛需工具。然而&#xff0c;其隱藏的安全風險卻常被忽視——輕則泄露隱私&#xff0c;重則導致賬號封禁、數據劫持甚至金融損失。本文將深入剖析兩大核心風險&#xff08;中間人攻擊與IP池污染&#xff09;&#xff0c;并…

深入理解大語言模型中的超參數:Temperature、Top-p 與更多

隨著大語言模型&#xff08;LLM&#xff09;如 GPT、Claude、Gemini 的廣泛應用&#xff0c;調優生成文本的質量與風格成為開發者和研究人員的重要課題。其中&#xff0c;超參數&#xff08;Hyperparameters&#xff09;如 temperature 和 top_p 扮演了核心角色&#xff0c;影響…

譯碼器Multisim電路仿真匯總——硬件工程師筆記

目錄 74LS實現二線三線譯碼器 1 74LS139D和74LS138D基礎知識 1.1 74LS139D 二線四線譯碼器 1.1.1 功能特點 1.1.2 引腳功能 1.1.3 工作原理 1.1.4 應用場景 1.1.5 使用方法 1.1.6 注意事項 1.6.7 邏輯真值表 1.2 74LS138D 3線8線譯碼器 1.2.1 功能特點 1.2.2 引腳…

國產 OFD 標準公文軟件數科 OFD 閱讀器:OFD/PDF 雙格式支持,公務辦公必備

各位辦公軟件小達人們&#xff0c;今天咱來聊聊數科OFD閱讀器&#xff01; 軟件下載地址安裝包 這軟件啊&#xff0c;是基于咱國家自主OFD標準的版式閱讀軟件&#xff0c;主要用來閱讀和處理OFD/PDF電子文件&#xff0c;還能用于公務應用擴展。它支持打開和瀏覽OFD/PDF格式的文…

vue中的toRef

在 Vue 中&#xff0c; toRef 函數用于將響應式對象的屬性轉換為一個獨立的 ref 對象&#xff0c;同時保持與原始屬性的關聯。其參數格式及用法如下&#xff1a; toRef 的參數說明 1. 參數 1&#xff1a;源對象&#xff08;必須&#xff09; - 類型&#xff1a; Object &…

暖通鍋爐的智能管控:物聯網實現節能又舒適?

暖通鍋爐系統在建筑供暖、工業供熱等領域扮演著重要角色&#xff0c;其運行效率和能源消耗直接關系到用戶的使用體驗和成本支出。傳統的暖通鍋爐管理方式往往依賴人工操作和經驗判斷&#xff0c;存在能耗高、調節不靈活、舒適性差等問題。隨著物聯網技術的發展&#xff0c;暖通…

PHP:從入門到進階的全面指南

PHP&#xff08;Hypertext Preprocessor&#xff09;作為一種廣泛使用的開源腳本語言&#xff0c;尤其適用于 Web 開發并可嵌入 HTML 中。自誕生以來&#xff0c;PHP 憑借其簡單易學、功能強大以及豐富的生態系統&#xff0c;成為了眾多網站和 Web 應用程序開發的首選語言之一。…

EXCEL 基礎函數

1、絕對引用、相對引用 1.1相對引用 相對引用&#xff0c;這是最常見的引用方式。復制單元格公式時&#xff0c;公式隨著引用單元格的位置變化而變化 例如在單元格內輸入sum(B2:C2)&#xff0c;然后下拉填充柄復制公式。 可以看到每個單元格的公式不會保持sum(B2:C2)&#…

升級到MySQL 8.4,MySQL啟動報錯:io_setup() failed with EAGAIN

在升級到MySQL 8.4后&#xff0c;許多用戶在啟動數據庫時遇到了一種常見錯誤&#xff1a;“io_setup() failed with EAGAIN”。本文將深入探討該錯誤的原因&#xff0c;并提供詳細的解決方案。錯誤分析錯誤描述當你啟動MySQL時&#xff0c;可能會在日志文件中看到以下錯誤信息&…

【ECharts Y 軸標簽優化實戰:從密集到稀疏的美觀之路】

ECharts Y 軸標簽優化實戰&#xff1a;從密集到稀疏的美觀之路 &#x1f4cb; 文章背景 在開發數據可視化模塊時&#xff0c;我們遇到了一個常見但棘手的圖表顯示問題&#xff1a;ECharts 圖表的 Y 軸標簽過于密集&#xff0c;影響了用戶體驗和數據的可讀性。本文將詳細記錄整個…