OpenCV 圖像哈希類cv::img_hash::AverageHash

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

算法描述

cv::img_hash::AverageHash是OpenCV中用于圖像哈希(Image Hashing)的一個類,屬于opencv_img_hash模塊。它實現了平均哈希算法(Average Hash, aHash),可以快速計算圖像的“指紋”或“感知哈希值”,用于判斷兩張圖像是否相似。

主要成員函數

  1. compute(InputArray image, OutputArray code)

計算輸入圖像的 aHash 哈希值。

void compute(InputArray image, OutputArray code);
  • image: 輸入圖像(支持 CV_8UC1 或 CV_8UC3)
  • code: 輸出的哈希值(類型為 CV_8U 的一維 Mat)
  1. compare(const cv::Mat& code1, const cv::Mat& code2)

比較兩個哈希值之間的差異(返回漢明距離)。

double compare(const cv::Mat& code1, const cv::Mat& code2);

返回值越小表示圖像越相似(0 表示完全相同)

示例代碼

#include <iostream>
#include <opencv2/img_hash.hpp>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace cv::img_hash;
using namespace std;int main()
{// 加載圖像(支持彩色圖或灰度圖)Mat img1 = imread( "/media/dingxin/data/study/OpenCV/sources/images/img2.jpg", IMREAD_COLOR );Mat img2 = imread( "/media/dingxin/data/study/OpenCV/sources/images/img1.jpg", IMREAD_COLOR );if ( img1.empty() || img2.empty() ){cerr << "無法加載圖像!" << endl;return -1;}// 創建 AverageHash 對象Ptr< AverageHash > ahash = AverageHash::create();// 計算哈希值Mat hash1, hash2;ahash->compute( img1, hash1 );ahash->compute( img2, hash2 );// 比較哈希值(返回漢明距離)double distance = ahash->compare( hash1, hash2 );cout << "漢明距離: " << distance << endl;if ( distance < 10 ){cout << "圖像非常相似!" << endl;}else{cout << "圖像不相似。" << endl;}return 0;
}

運行結果

漢明距離: 1
圖像非常相似!

補充:
漢明距離(Hamming Distance) 是一種用于測量兩個等長字符串或數據序列之間差異的度量方法。具體來說,它定義為兩個字符串在對應位置上不同字符的數量。對于二進制串(如哈希值),漢明距離就是兩個串中不相同位的個數。
在圖像哈希中的應用

在圖像處理和計算機視覺領域,漢明距離常用于比較兩個圖像的哈希值(指紋)。例如,在使用感知哈希算法(如 aHash、pHash 等)生成圖像的哈希值后,可以通過計算它們之間的漢明距離來衡量這兩幅圖像的相似度:

  • 漢明距離越小,表示兩幅圖像越相似。
  • 漢明距離為 0 表示兩幅圖像完全相同(至少在哈希級別上是相同的)。
  • 如果漢明距離超過某個閾值,則認為兩幅圖像不相似。

計算漢明距離的方法

假設我們有兩個等長的二進制字符串 str1 和 str2,其漢明距離可以通過以下步驟計算:

  • 將兩個字符串逐位進行異或操作(XOR),得到一個新的字符串,其中每個位置上的值為 1 表示原兩個字符串在此位置上的值不同,為 0 表示相同。
  • 統計新字符串中 1 的數量,即為漢明距離。

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

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

相關文章

【Python-網絡爬蟲】爬蟲的基礎概念介紹

目錄 一、爬蟲的介紹 1.1 爬蟲的概念 1.2 爬蟲的作用 1. 搜索引擎數據索引 2. 商業數據采集與分析 3. 輿情監控與社交分析 4. 學術研究與數據挖掘 5. 信息聚合與服務優化 二、爬蟲的分類 三、爬蟲的基本流程 3.1 基本流程 3.2 Robots協議 一、爬蟲的介紹 1.1 爬蟲的…

力扣-31.下一個排列

題目鏈接 31.下一個排列 class Solution {public void nextPermutation(int[] nums) {//1.從右往左找第一個非逆序的數aint left nums.length - 2; //這里是為了找不到順序對的時候正好停在-1while (left > 0 && nums[left] > nums[left 1]) { //一定要取等號…

Python爬蟲實戰:研究python-nameparser庫相關技術

1. 引言 在當今數字化時代,姓名作為個人身份的重要標識,在許多領域都有著廣泛的應用需求。例如,在客戶關系管理系統中,準確解析姓名可以幫助企業更好地了解客戶背景;在學術研究中,分析作者姓名分布有助于發現研究團隊的地域特征;在社交網絡分析中,姓名信息可以輔助進行…

Android中MVI架構詳解

博主前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住也分享一下給大家 ??點擊跳轉到教程 什么是 MVI 架構? MVI (Model-View-Intent) 是一種單向數據流的架構模式,它源于響應式編程思想。在 MVI 中: 架構圖: 1、Model: 代表的是UI 狀態,它包含了…

AutoGen-AgentChat-3-人機交互

import os from dotenv import load_dotenvload_dotenv()True人機交互 在上一節“團隊”中&#xff0c;我們了解了如何創建、觀察和控制代理團隊。本節將重點介紹如何在應用程序中與團隊進行交互&#xff0c;并向團隊提供人工反饋。 您可以通過兩種主要方式從您的應用程序與團隊…

Flink Db2 CDC 環境配置與驗證

一、DB2 數據庫核心配置 1. 啟用數據庫日志記錄與CDC支持 -- 以DB2管理員身份連接數據庫 CONNECT TO mydb USER db2inst1 USING password;-- 啟用數據庫歸檔日志模式&#xff08;CDC依賴&#xff09; UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:/db2log/archive…

初識單例模式

文章目錄場景通點定義實現思路六種 Java 實現餓漢式懶漢式synchronized 方法雙重檢查鎖 Double Check Lock Volatile靜態內部類 Singleton Holder枚舉單例單例運用場景破解單例模式參考場景通點 資源昂貴&#xff1a;數據庫連接池、線程池、日志組件&#xff0c;只需要一份全…

音樂搶單源碼(連單卡單/疊加組規則/打針/多語言)

簡介&#xff1a; 測試環境&#xff1a;Nginx、PHP7.2、MySQL5.6&#xff0c;運行目錄設置為public&#xff0c;偽靜態thinkphp&#xff0c;建議開啟SSL 測試語言&#xff1a;11種 不知道誰給我的一套&#xff0c;說是買來的&#xff0c;我看了一下功能感覺也一般&#…

分類樹查詢性能優化:從 2 秒到 0.1 秒的技術蛻變之路

在電商系統中&#xff0c;分類樹查詢是一個基礎且高頻的功能&#xff0c;然而這個看似簡單的功能背后卻隱藏著不小的性能挑戰。本文將分享我們在實際項目中對分類樹查詢功能進行五次優化的全過程&#xff0c;看如何將查詢耗時從 2 秒縮短至 0.1 秒&#xff0c;為用戶提供更流暢…

Ansible 介紹及安裝

簡介 Ansible 是一款開源的自動化工具&#xff0c;廣泛應用于配置管理、應用部署、任務自動化以及多節點管理等領域。它由 Michael DeHaan 于 2012 年創建&#xff0c;ansible 目前已經已經被紅帽官方收購&#xff0c;是自動化運維工具中大家認可度最高的&#xff0c;并且上手…

超光譜相機的原理和應用場景

超光譜相機是光譜成像技術的尖端形態&#xff0c;具備亞納米級光譜分辨率與超千波段連續覆蓋能力&#xff0c;通過“圖譜合一”的三維數據立方體實現物質的精準識別與分析。其核心技術架構、應用場景及發展趨勢如下&#xff1a;一、核心技術原理1、?分光機制??干涉分光?&am…

掌握MySQL函數:高效數據處理指南

? 在 MySQL 數據庫管理系統中&#xff0c;函數扮演著極為重要的角色。它們就像是數據庫操作的得力助手&#xff0c;能夠幫助開發者高效地完成各種數據處理任務。本文將深入探討 MySQL 函數的方方面面&#xff0c;從其基本概念到實際應用&#xff0c;幫助讀者全面掌握這一強大的…

10.SpringBoot的統一異常處理詳解

文章目錄1. 異常處理基礎概念1.1 什么是異常處理1.2 為什么需要統一異常處理1.3 Spring異常處理機制2. SpringBoot默認異常處理2.1 默認錯誤頁面2.2 自定義錯誤頁面3. 全局異常處理器3.1 基礎全局異常處理器3.2 統一響應格式3.3 使用統一響應格式的異常處理器4. 自定義異常4.1 …

No Hack No CTF 2025Web部分個人WP

No Hack No CTF 2025 Next Song is 春日影 hint&#xff1a;NextJS Vulnerability at /adminCVE-2025-29927Next.js 中間件權限繞過漏洞 訪問admin路由發現跳轉利用CVE&#xff1a; curl -i \-H "x-middleware-subrequest: middleware:middleware:middleware:middleware:m…

STM32第十八天 ESP8266-01S和電腦實現串口通信

一&#xff1a; ESP和電腦實現串口通信1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 響應 : OK 2. 連接路路由器? ATCWJAP"SSID","password" // SSID and password of router 響應 : OK 3. 查詢 ESP8266 設備的 IP 地址 ATCIFSR 響應 : CIFSR:APIP…

STM32第十七天ESP8266-01Swifi模塊

ESP8266-01S wifi模塊1&#xff1a;ESP8266是實現wifi通訊的一個模塊種類&#xff0c;有很多分類包含esp8266-12、esp8266-12E、ESP8266-01S、esp32等等。esp8266-01S由一顆esp8266作為主控再由一塊flash作為存儲芯片組成&#xff0c;帶有板載芯片供電采用3.3V電壓使用串口進行…

ProCCD復古相機:捕捉復古瞬間

在數字攝影盛行的今天&#xff0c;復古膠片相機的獨特質感和懷舊風格依然吸引著眾多攝影愛好者。ProCCD復古相機APP正是這樣一款能夠滿足用戶對復古攝影需求的應用程序。它通過模擬復古CCD數碼相機的效果&#xff0c;讓用戶在手機上也能輕松拍出具有千禧年風格的照片和視頻。無…

Spring Boot 應用啟動時,端口 8080 已被其他進程占用,怎么辦

1、修改application.yml配置文件&#xff0c;將端口號更改為未被占用的端口&#xff08;例如9090&#xff09;2、以管理員身份運行命令提示符在命令提示符窗口中輸入命令netstat -ano | findstr :8080”輸出結果可能如下&#xff1a;“TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING xx…

使用Jenkins完成springboot項目快速更新

?重磅&#xff01;盹貓的個人小站正式上線啦&#xff5e;誠邀各位技術大佬前來探秘&#xff01;? 這里有&#xff1a; 硬核技術干貨&#xff1a;編程技巧、開發經驗、踩坑指南&#xff0c;帶你解鎖技術新姿勢&#xff01;趣味開發日常&#xff1a;代碼背后的腦洞故事、工具…