c++將jpg轉換為灰度圖

c++將jpg轉換為灰度圖

step1:添加依賴

下載這兩個文件,放在cpp同一目錄下,編譯生成
https://github.com/nothings/stb/blob/master/stb_image_write.h
https://github.com/nothings/stb/blob/master/stb_image.h

step2:C:\Users\wangrusheng\source\repos\CMakeProject1\CMakeProject1\CMakeProject1.cpp

#include <vector>
#include <string>
#include <iostream>// 必須在使用前定義這些宏
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"       // 圖像加載庫
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h" // 圖像保存庫void convert_to_grayscale(const std::string& input_path,const std::string& output_path,int quality = 75)
{// 加載原始圖像int width, height, channels;unsigned char* orig_data = stbi_load(input_path.c_str(), &width, &height, &channels, 0);if (!orig_data) {std::cerr << "錯誤:無法加載圖像 " << input_path<< "\n原因: " << stbi_failure_reason() << std::endl;return;}std::cout << "已加載圖像: " << width << "x" << height<< ",通道數: " << channels << std::endl;// 創建灰度數據緩沖區(單通道)std::vector<unsigned char> gray_data(width * height);// 灰度轉換核心算法const float R_WEIGHT = 0.299f;const float G_WEIGHT = 0.587f;const float B_WEIGHT = 0.114f;for (int y = 0; y < height; ++y) {for (int x = 0; x < width; ++x) {// 計算當前像素的內存位置const int pixel_index = (y * width + x) * channels;// 獲取RGB分量(自動兼容3/4通道圖像)unsigned char r = orig_data[pixel_index];unsigned char g = orig_data[pixel_index + 1];unsigned char b = orig_data[pixel_index + 2];// 計算灰度值(加權平均法)gray_data[y * width + x] = static_cast<unsigned char>(R_WEIGHT * r +G_WEIGHT * g +B_WEIGHT * b);}}// 保存灰度圖像(JPEG格式)if (!stbi_write_jpg(output_path.c_str(), width, height, 1, gray_data.data(), quality)) {std::cerr << "錯誤:無法保存圖像到 " << output_path << std::endl;}// 釋放原始圖像內存stbi_image_free(orig_data);
}int main() {// 輸入輸出路徑(使用原始字符串避免轉義)const std::string input_file = R"(C:\Users\wangrusheng\Downloads\red.jpg)";const std::string output_file = R"(C:\Users\wangrusheng\Downloads\new_gray.jpg)";// 執行轉換并設置JPEG質量為85%convert_to_grayscale(input_file, output_file, 85);std::cout << "轉換完成,請檢查輸出文件: " << output_file << std::endl;return 0;
}

end

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

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

相關文章

python——正則表達式

一、簡介 在 Python 中&#xff0c;正則表達式主要通過 re 模塊實現&#xff0c;用于字符串的匹配、查找、替換等操作。 二、Python的re模塊 使用前需要導入&#xff1a; import re 三、常用方法 方法描述re.match(pattern, string)從字符串開頭匹配&#xff0c;返回第一個匹…

Soybean Admin 配置vite兼容低版本瀏覽器、安卓電視瀏覽器(飛視瀏覽器)

環境 window10 pnpm 8.15.4 node 8.15.4 vite 5.1.4 soybean admin: 1.0.0 native-ui: 2.38.0 小米電視 MIUI TV版本&#xff1a;MiTV OS 2.7.1886(穩定版) 飛視瀏覽器&#xff1a;https://www.fenxm.com/1220.html在小米電視安裝飛視瀏覽器可以去小紅書查安裝教程&#xff1a…

系統與網絡安全------網絡通信原理(1)

資料整理于網絡資料、書本資料、AI&#xff0c;僅供個人學習參考。 文章目錄 網絡通信模型協議分層計算機網絡發展計算機網絡功能什么是協議為什么分層郵局實例 OSI模型OSI協議模型OSI七層模型OSI七層的功能簡介 TCP/IP模型OSI模型與TCP/IP模型TCP/IP協議族的組成各層PDU設備與…

如何使用通義靈碼完成PHP單元測試 - AI輔助開發教程

一、引言 在軟件開發過程中&#xff0c;測試是至關重要的一環。然而&#xff0c;在傳統開發中&#xff0c;測試常常被忽略或草草處理&#xff0c;很多時候并非開發人員故意為之&#xff0c;而是缺乏相應的測試思路和方法&#xff0c;不知道如何設計測試用例。隨著 AI 技術的飛…

批量清空圖片的相機參數、地理位置等敏感元數據

我們在使用相機或者手機拍攝照片的時候&#xff0c;照片中都會帶有一些敏感元數據信息&#xff0c;比如說相機的型號&#xff0c;參數&#xff0c;拍攝的時間地點等等。這些信息雖說不是那么引人注意&#xff0c;但是在某些時候他是非常隱私非常重要的。如果我們將這些信息泄露…

SQL優化算法解析 | PawSQL 如何將EXISTS子查詢“秒拆“為JOIN連接

在數據庫性能調優中,子查詢優化是提升查詢效率的關鍵點之一。今天,我們將分享一個使用 PawSQL 對EXISTS子查詢進行重寫優化的案例,展示如何通過合理的SQL重寫與索引設計,實現超過487516.45%的性能提升! 一、案例分析&#xff1a;EXISTS子查詢的性能困境 這個查詢的目的是找出…

大模型day1 - 什么是GPT

什么是GPT 全稱 Generative Pre-trained Transformer 是一種基于 Transformer 架構的大規模 預訓練 語言模型&#xff0c;由OpenAI研發&#xff0c;但GPT僅僅只是借鑒了Transformer 中 Decoder 的部分&#xff0c;并且做了升級 Transformer 架構 Transformer架構 是一種用于…

MDM功能演示:遠程鎖定與數據擦除,保障企業移動設備安全

在當今高度互聯的商業環境中&#xff0c;企業數據伴隨著員工穿梭于不同城市、時區和設備之間。智能手機、平板電腦和筆記本電腦賦予員工隨時隨地辦公的能力&#xff0c;但也帶來了新的安全挑戰&#xff1a;設備一旦遺失或落入不當之手&#xff0c;企業數據就面臨泄露風險。 無…

深度集成學習不均衡樣本圖像分類

用五個不同的網絡&#xff0c;然后對分類概率進行平均&#xff0c;得到分類結果。基本上分類精度可以提升10% 1.導入基本庫 import torch import copy import torch.nn as nn import torchvision.models as models from torchvision import datasets from torchvision import…

從零開始學java--泛型

泛型 目錄 泛型 引入 泛型類 泛型與多態 泛型方法 泛型的界限 類型擦除 函數式接口 Supplier供給型函數式接口&#xff1a; Consumer消費型函數式接口&#xff1a; Function函數型函數式接口&#xff1a; Predicate斷言式函數式接口&#xff1a; 判空包裝 引入 …

5?? Coze+AI應用基礎教學(2025年全新版本)

目錄 一、了解應用開發 1.1 扣子應用能做什么 1.2 開發流程 1.3 開發環境 二、快速搭建一個AI應用 2.1 AI翻譯應用介紹 2.2 設計你的應用功能 2.3 創建 AI 應用項目 2.4 編寫業務邏輯(新建工作流) 2.5 搭建用戶界面 2.6 效果測試 2.7 發布應用 一、了解應用開發 …

工會成立100周年紀念,開發職工健身AI運動小程序、APP方案推薦

時光荏苒&#xff0c;轉眼間2025年五一將至&#xff0c;這一年對于中華全國總工會而言&#xff0c;具有非凡的歷史意義——它將迎來成立100周年的輝煌時刻。為了慶祝這一盛事&#xff0c;各級工會組織將精心籌備了一系列豐富多彩、形式多樣的紀念活動&#xff0c;旨在展現工會百…

【深度學習】Ubuntu 服務器配置開源項目FIGRET(PyTorch、torch-scatter、torch-sparse、Gurobi 安裝)

開源項目網址&#xff1a;https://github.com/FIGRET/figret 該項目在SIGCOMM2024發表&#xff0c;用深度學習方法處理流量工程中的突發問題 1. 創建新的 Conda 環境 使用國內鏡像源創建環境? conda create -n figret python3.8.0 --override-channels -c https://mirrors.…

【SpringCloud】從入門到精通(上)

今天主播我把黑馬新版微服務課程MQ高級之前的內容都看完了&#xff0c;雖然在看視頻的時候也記了筆記&#xff0c;但是看完之后還是忘得差不多了&#xff0c;所以打算寫一篇博客再溫習一下內容。 課程坐標:黑馬程序員SpringCloud微服務開發與實戰 微服務 認識單體架構 單體架…

MySQL中動態生成SQL語句去掉所有字段的空格

在MySQL中動態生成SQL語句去掉所有字段的空格 在數據庫管理過程中&#xff0c;我們常常會遇到需要對表中字段進行清洗和整理的情況。其中&#xff0c;去掉字段中的空格是一項常見的操作。當表中的字段數量較少時&#xff0c;我們可以手動編寫 UPDATE 語句來處理。但如果表中包…

【Grok 大模型深度解析】第二期:架構探秘與訓練哲學

在上一期的內容中,我們對 Grok 大模型從技術溯源的角度,了解了它從 Transformer 架構局限性出發,邁向混合架構創新的歷程,同時也梳理了從 Grok - 1 到 Grok - 3 的版本迭代所帶來的技術躍遷以及其獨特的差異化優勢。這一期,我們將深入到 Grok 大模型的架構內部,探究其精妙…

c# 使用NPOI將datatable的數據導出到excel

以下是使用 NPOI 庫 將 DataTable 數據導出到 Excel 的詳細步驟和代碼示例(支持 .xls 和 .xlsx 格式): 步驟 1:安裝 NPOI NuGet 包 Install-Package NPOI Install-Package NPOI.OOXML # 若需導出 .xlsx 格式 步驟 2:完整代碼實現 using NPOI.SS.UserModel; using NPOI.…

基于SpringBoot的求職招聘網站系統(源碼+數據庫)

473基于SpringBoot的求職招聘網站系統&#xff0c;本系統共分為2個角色&#xff1a;系統管理員、用戶&#xff0c;主要功能如下 【前臺功能】 用戶角色功能&#xff1a; 1. 注冊和登錄&#xff1a;注冊賬戶并登錄系統&#xff0c;以便訪問更多功能。 2. 個人信息管理&#x…

CSS 過渡與變形:讓交互更絲滑

在網頁設計中&#xff0c;動效能讓用戶交互更自然、流暢&#xff0c;提升使用體驗。本文將通過 CSS 的 transition&#xff08;過渡&#xff09;和 transform&#xff08;變形&#xff09;屬性&#xff0c;帶你入門基礎動效設計&#xff0c;結合案例演示如何實現顏色漸變、元素…

rqlite:一個基于SQLite構建的分布式數據庫

今天給大家介紹一個基于 SQLite 構建的輕量級分布式關系型數據庫&#xff1a;rqlite。 rqlite 基于 Raft 協議&#xff0c;結合了 SQLite 的簡潔性以及高可用分布式系統的穩健性&#xff0c;對開發者友好&#xff0c;操作極其簡便&#xff0c;其核心設計理念是以最低的復雜度實…