使用Python,OpenCV計算跑圖的圖像彩色度

使用Python,OpenCV計算跑圖的圖像彩色度

這篇博客將介紹如何計算跑圖里最鮮艷的top25圖片和最灰暗的top25圖片并顯示色彩彩色度值展示。

效果圖

以下分別是最鮮艷top25和最灰暗top25對比效果圖:
在這里插入圖片描述

最鮮艷top25效果圖:
在這里插入圖片描述

最灰暗top25效果圖如下:

在這里插入圖片描述

源碼見如下鏈接

https://blog.csdn.net/qq_40985985/article/details/115014533

# USAGE
# python colorfulness.py --images E:\personal\images# 導入必要的包
from imutils import build_montages
from imutils import paths
import numpy as np
import argparse
import imutils
import cv2# 圖像彩色度計算方法
def image_colorfulness(image):# 分離照片為三通道RGB值(B, G, R) = cv2.split(image.astype("float"))# 計算 rg = R - G 紅綠對手顏色空間rg = np.absolute(R - G)# 計算 yb = 0.5 * (R + G) - B  黃藍對手顏色空間yb = np.absolute(0.5 * (R + G) - B)# 計算`rg` and `yb` 的標準方差和均值(rgMean, rgStd) = (np.mean(rg), np.std(rg))(ybMean, ybStd) = (np.mean(yb), np.std(yb))# 將標準方差和均值合并stdRoot = np.sqrt((rgStd ** 2) + (ybStd ** 2))meanRoot = np.sqrt((rgMean ** 2) + (ybMean ** 2))# 獲得圖像彩色度量值,并返回return stdRoot + (0.3 * meanRoot)# 構建命令行參數,并解析
# --image 輸入圖片文件夾路徑
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--images", required=False,default='bm_sports/sports/',help="path to input directory of images")
args = vars(ap.parse_args())# 初始化結果list
print("[INFO] computing colorfulness metric for dataset...")
# 通常情況下存儲圖像id:圖像炫彩度量值,在這里介于圖像數據量小且為了后續展示方便,存儲圖像:圖像炫彩度量值
results = []# 遍歷圖片路徑
for imagePath in paths.list_images(args["images"]):# 加載圖像,保持寬高比的縮放以加快處理速度,計算圖像彩色度度量image = cv2.imread(imagePath)image = imutils.resize(image, width=250)C = image_colorfulness(image)# 顯示圖像的彩色度分數cv2.putText(image, "{:.2f}".format(C), (40, 40),cv2.FONT_HERSHEY_SIMPLEX, 1.4, (0, 255, 0), 3)# 添加圖像的炫彩度量到結果listresults.append((image, C))# 對結果進行排序最炫彩圖像靠前;
# 選出最炫彩、最不炫彩的25個圖像
print("[INFO] displaying results...")
results = sorted(results, key=lambda x: x[1], reverse=True)
mostColor = [r[0] for r in results[:25]]
leastColor = [r[0] for r in results[-25:]][::-1]# 構建倆組圖像的蒙太奇效果
mostColorMontage = build_montages(mostColor, (128, 128), (5, 5))
leastColorMontage = build_montages(leastColor, (128, 128), (5, 5))# 顯示圖像結果
cv2.imshow("Most Colorful", mostColorMontage[0])
cv2.imshow("Least Colorful", leastColorMontage[0])
cv2.waitKey(0)
cv2.destroyAllWindows()

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

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

相關文章

LeetCode 60:排列序列

LeetCode 60:排列序列問題定義與核心挑戰 給定整數 n 和 k,返回集合 {1,2,...,n} 的第 k 個字典序排列。直接生成所有排列再遍歷到第 k 個的方法(時間復雜度 O(n!))會因 n≥10 時階乘爆炸而超時,因此需要 數學推導 貪…

亞遠景-傳統功能安全VS AI安全:ISO 8800填補的標準空白與實施難點

一、為什么需要ISO 8800:傳統安全標準的“盲區”傳統功能安全(ISO 26262)? 假設:系統行為可被完整規格化,失效模式可枚舉,風險可用概率-危害矩陣量化。? 盲區:對“設計意圖正確,但…

菜鳥教程 R語言基礎運算 注釋 和數據類型

菜鳥教程 R語言基礎運算 注釋 和數據類型 1.注釋 注釋主要用于一段代碼的解析,可以讓閱讀者更易理解,編程語言的注釋會被編譯器忽略掉,且不會影響代碼的執行。 一般編程語言的注釋分為單行注釋與多行注釋,但是 R 語言只支持單行注…

華為云ELB(彈性負載均衡)持續報異常

華為云ELB(彈性負載均衡)持續報異常,需結合實例類型(共享型/獨享型)和異常代碼進行針對性排查。以下是分步排查建議:一、根據實例類型排查網絡配置共享型實例 安全組規則:檢查后端服務器安全組是…

《R for Data Science (2e)》免費中文翻譯 (第2章) --- Workflow: basics

寫在前面 本系列推文為《R for Data Science (2)》的中文翻譯版本。所有內容都通過開源免費的方式上傳至Github,歡迎大家參與貢獻,詳細信息見: Books-zh-cn 項目介紹: Books-zh-cn:開源免費的中文書籍社區 r4ds-zh-cn …

開源深度學習新寵:Burn框架助您無憂高效建模

在日新月異的人工智能世界里,各類深度學習框架如雨后春筍般涌現,而Burn,作為新一代的深度學習框架,以其不妥協的靈活性、高效性和可移植性嶄露頭角。本文將深入探討Burn的核心功能、應用場景及具體使用方法,幫助您更好…

基于深度學習的圖像分割:使用DeepLabv3實現高效分割

前言 圖像分割是計算機視覺領域中的一個重要任務,其目標是將圖像中的每個像素分配到不同的類別中。近年來,深度學習技術,尤其是卷積神經網絡(CNN),在圖像分割任務中取得了顯著的進展。DeepLabv3是一種高效的…

如何高效合并音視頻文件(時間短消耗資源少)(二)

英語字幕 1 00:00:06,480 --> 00:00:08,400 Good morning. We have a banger for you2 00:00:08,400 --> 00:00:09,840 today. We're going to launch chatbt3 00:00:09,840 --> 00:00:11,519 agent. But before jumping into that, I'd4 00…

內網后滲透攻擊過程(實驗環境)--4、權限維持(2)

用途限制聲明,本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具,嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果,作者及發布平臺不承擔任何責任。滲透測試涉及復雜技…

CentOS 9 配置國內 YUM 源

1.備份 sudo mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.backup sudo mv /etc/yum.repos.d/centos-addons.repo /etc/yum.repos.d/centos-addons.repo.backup2.創建新文件 vi /etc/yum.repos.d/centos.repo[baseos] nameCentOS Stream $releasever - BaseO…

【算法】遞歸、搜索與回溯算法入門

文章目錄遞歸什么是遞歸為什么會用到遞歸如何理解遞歸如何寫好一個遞歸搜索 vs 深度優先遍歷 vs 深度優先搜索 vs 寬度(廣度)優先遍歷 vs 寬度(廣度)優先搜索 vs 暴搜深度優先遍歷 vs 深度優先搜索(dfs)寬度…

借助Aspose.HTML控件,在 Python 中將 SVG 轉換為 PDF

您可能會發現許多解決方案都提供以編程方式將SVG轉換為PDF 的功能。但這篇博文將介紹一個功能強大的 SDK,供 Python 開發人員自動化文件轉換和操作。本指南將重點介紹通過 .NET 實現 Python 的 Aspose.HTML。此外,我們將逐步講解相關步驟和代碼片段&…

高級06-Java網絡編程:從Socket到HTTP

引言:Java 網絡編程的重要性 隨著互聯網技術的飛速發展,網絡編程已成為現代軟件開發中不可或缺的一部分。Java 作為一種廣泛應用于企業級開發和分布式系統的編程語言,提供了強大的網絡通信支持。從底層的 Socket 編程到高層的 HTTP 協議處理&…

STM32的藍牙通訊(HAL庫)

藍牙基礎知識(了解即可):1.是一種利用低功率無線電,支持設備短距離通信的無線電技術,能在包括移動電話、PDAQ、無線耳機、筆記本電腦、相關外設等眾多設備之間進行無線信息交換,藍牙工作在全球通用的2.4 GH…

方案B,version1

我們重新設計起步階段的步驟,目標是:通過運行PowerShell腳本和配置GitHub Actions工作流(deploy.yml)來實現自動化部署。 要求: 用私有倉庫(my-website-source-SSH)存儲源碼。 通過GitHub Actions自動構建(這里只是簡單的Hello World,所以構建步驟可以簡化為復制文件…

Linux --- 進程

一、進程概念 在 Linux 系統中,??進程(Process)?? 是程序執行的動態實例,是操作系統進行資源分配和調度的基本單位。 ??1. 程序 vs 進程?? ??程序(Program)??:是靜態的代碼集合&…

Cgroup 控制組學習(三)在容器中使用 CGroups

一、CGroups 關于mememory的限制操作 cgroup關于cpu操作 關于memeory cgroup的幾個要點 ① memeory限額類 1、memory.limit_bytes:硬限制--> 限制最大內存使用量,單位有k、m、g三種,填-1則代表無限制,默認是字節2、memory.soft_limi…

SpringBoot面試基礎知識

SpringBoot 是面試中后端開發崗位的高頻考點,以下是核心考點整理:1. SpringBoot 基礎概念- 定義:SpringBoot 是 Spring 框架的簡化版,通過“自動配置”“起步依賴”等特性,簡化 Spring 應用的搭建和開發,減…

Java面試全方位解析:從基礎到AI的技術交鋒

Java面試全方位解析:從基礎到AI的技術交鋒 面試場景:互聯網大廠Java工程師崗位面試 面試官:您好,我是今天的面試官,接下來我們將進行三輪技術面試。 謝飛機:您好您好!我是謝飛機,特別…

Web Worker:解鎖瀏覽器多線程,提升前端性能與體驗

目錄 一、Web Worker 是什么? 核心特性 類型 二、為什么需要 Web Worker?(單線程的痛點) 三、Web Worker 的典型使用場景 四、一個簡單的代碼示例 (專用 Worker) 五、使用 Web Worker 的注意事項 六、總結 一、Web Worker 是什么? 簡…