【OpenCV】像素信息統計

????????介紹了計算像素均值、方差的API,以及統計像素信息的方法。相關API:

  • minMaxLoc()
  • mean()
  • meanStdDev()

代碼:

#include "iostream"
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int main(int argc, char *argv)
{//【單通道圖像,均值】Mat src = imread("C:/Users/Administrator/Desktop/Zooey.png",IMREAD_GRAYSCALE);if (src.empty()){cout << "could not find image file" << endl;return -1;}imshow("灰度原圖", src);//獲取圖片相關信息,并打印int w = src.cols;int h = src.rows;int ch = src.channels();cout << "w:" << w << "	h:" << h << "	ch:" << ch << endl;//求最大最小像素值,最大最小像素點double min_value;double max_value;Point minloc;Point maxloc;minMaxLoc(src, &min_value, &max_value, &minloc, &maxloc);	//取最小最大API,最后一個參數mask,在這里是限制尋找范圍。注:只支持單通道。printf("min_value:%.2f	max_value:%.2f\n", min_value, max_value);	//像素值cout << "minloc:" << minloc.x << "," << minloc.y << "	maxloc:" << maxloc.x << "," << maxloc.y << endl;	//像素點//求均值Scalar s = mean(src);	//均值APIprintf("mean:%.2f\n", s[0]);//如果是彩色圖像,則對應三個通道,s[0]s[1]s[2]。//【三通道彩色圖像,均值、方差】Mat src1 = imread("C:/Users/Administrator/Desktop/Zooey.png", IMREAD_COLOR);if (src.empty()){cout << "could not find image file" << endl;return -1;}imshow("彩色原圖", src1);Mat mm, mstd;meanStdDev(src1, mm, mstd);	//均值、方差API,第一個參數是原圖,第二個參數是均值,第三個參數是方差。printf("stddev:%.2f	%.2f	%.2f\n", mstd.at<double>(0, 0), mstd.at<double>(1, 0), mstd.at<double>(2, 0));	//打印三個通道的方差,單通道只有0,0cout << "mm:" << mm.at<double>(0, 0) << "   " << mm.at<double>(1, 0) << "   " << mm.at<double>(2, 0) << endl;	//打印三個通道的均值,單通道只有0,0//【像素值統計信息,即統計某一像素數值有多少個】vector<int> hist(256);	//創建一個vector容器,C++知識for (int i = 0; i < 256; i++){hist[i] = 0;}for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){int pv = src.at<uchar>(row, col);hist[pv]++;}}waitKey(0);destroyAllWindows();return 0;
}

內容都在注釋里講得很清楚了。注意有些API只適用于單通道。

還要注意meanStdDev()返回的對象是Mat類型,以及如何通過這個Mat對象獲取我們想要的信息。

第三部分像素統計,是統計某一像素值在一幅圖片中有多少個。像素值0-255總共256個,所以創建一個大小為256的vector,將像素值作為下標,其對應的值作為出現次數,沒遍歷到一個像素值,就在這個值作為下標的位置+1進行累加,最后就可以知道這個像素值總共出現了多少次。

小應用。方差代表波動,純色圖像的方差為0,可以以此來識別純色圖像。

演示:

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

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

相關文章

談談如何建立可落地的數字化轉型戰略

數字化轉型戰略是指將數字技術集成到企業或組織的所有領域&#xff0c;從根本上改變其運營方式以及為客戶提供價值的方式。它涉及采用新技術并重新思考現有業務流程&#xff0c;以提高效率、生產力和客戶滿意度。 成功的數字化轉型戰略需要采用涉及人員、流程和技術的整體方法。…

【全開源】JAVA同城搬家系統源碼小程序APP源碼

JAVA同城搬家系統源碼 特色功能&#xff1a; 強大的數據處理能力&#xff1a;JAVA提供了豐富的數據結構和算法&#xff0c;以及強大的并發處理能力&#xff0c;使得系統能夠快速地處理大量的貨物信息、司機信息、訂單信息等&#xff0c;滿足大規模物流的需求。智能路徑規劃&a…

香橙派 AIPro開發板上手測評

前言 最近拿到了一個新玩具&#xff1a;香橙派 AIPro。一個只比銀行卡大一點點的開發板能帶給我們多少驚喜呢&#xff1f;接下來就跟我一起來體驗下這塊開發板的魅力。 一、硬件配置 CPU&#xff1a;配備了4核64位ARM處理器&#xff0c;其中默認預留1個給AI處理器使用 NPU&am…

SpringBoot和Apache Doris實現實時廣告推薦系統

本專題旨在向讀者深度解讀Apache Doris技術,探討其與SpringBoot框架結合在各類實際應用場景中的角色與作用。本專題包括十篇文章,每篇文章都概述了一個特定應用領域,如大數據分析、實時報告系統、電商數據分析等,并通過對需求的解析、解決方案的設計、實際應用示例的展示以…

【Python實戰】你還在沖會員看電影電視劇嗎?Python帶你實現各大資源免費看!

前言 halo&#xff0c;包子們下午好 今天給大家實現一個視頻播放器&#xff0c;可以看任何電影&#xff0c;電視劇&#xff0c;不要再為以后看電視看電影而煩惱&#xff0c;今天是福利文章&#xff0c;相信我絕對有用&#xff01; 開發工具 Python版本&#xff1a;3.7.8 相…

Java Lambda 會影響性能嗎?

# 測試代碼LamdaTest.java import java.util.*;class LamdaTest {static volatile List<Integer> integers new ArrayList<Integer>();// 普通 for 循環測試public static int forLoopInteger() {int total 0;for (int i 0; i < integers.size(); i) {total…

驅動未來:IT行業的現狀與發展趨勢

前言 隨著技術的不斷進步&#xff0c;IT行業已成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈&#xff0c;這些技術正在重塑我們的生活和工作方式。本文將探討IT行業的現狀和未來發展趨勢&#xff0c;并邀請行業領袖、技術專家和…

Follow Your Pose: Pose-Guided Text-to-Video Generation using Pose-Free Videos

清華深&港科&深先進&Tencent AAAI24https://github.com/mayuelala/FollowYourPose 問題引入 本文的任務是根據文本來生成高質量的角色視頻&#xff0c;并且可以通過pose來控制任務的姿勢&#xff1b;當前缺少video-pose caption數據集&#xff0c;所以提出一個兩…

Java的上下轉型與多態

上下轉型 首先&#xff0c;定義一個父類Person // 父類 class Person {public void run(){System.out.println("person 中的 run");}public void eat(){System.out.println("Person 中的 eat");}}接著定義一個繼承自父類的子類Student: // 子類 class S…

拿捏數據結構- 鏈式二叉樹

鏈式二叉樹的概念&#xff1a; 鏈式二叉樹解決的是非完全二叉樹解決不了的問題 什么意思呢&#xff0c;簡單的說就是&#xff0c;鏈式二叉樹 可以是下面三種二叉樹 但是非鏈式二叉樹只能是前兩種 鏈式二叉樹的存儲 節點結構&#xff1a;首先定義一個結構體或類來表示二叉樹的節…

機器學習-7-機器學習中常用的可視化方式總結

參考通透!!監督學習和無監督學習全總結! 參考機器學習中的可視化 1 監督學習和無監督學習 監督學習和無監督學習,它們之間的主要區別在于訓練數據的標簽信息是否提供。 1.1 概述 一、監督學習(Supervised Learning): (1)標簽信息: 監督學習使用帶有標簽的訓練數據。這…

單元測試的實現方式

單元測試的實現方式包括&#xff1a;人工靜態檢查、動態執行跟蹤 人工靜態檢查 人工靜態檢查是一種單元測試實現方式&#xff0c;它主要依賴開發人員的人工代碼審查和靜態分析工具來識別潛在的代碼問題。 代碼審查&#xff1a;開發人員通過仔細檢查代碼來發現潛在的問題。他…

不怕YOLOv10高歌猛進,我有YOLOv8穩扎穩打

YOLOv10 出來有幾天時間了&#xff0c;這次我沒有選擇第一時間出文章解析&#xff0c;如此頻繁的發布數字版本的 YOLO 著實讓人頭疼&#xff0c;雖然數字的更新并非舊版技術的過時&#xff0c; 但是這肯定會讓很多在校同學增加很多焦慮情緒。這里還是請大家辯證看待。 v10 這次…

解密消息隊列的復制魔法:RocketMQ vs Kafka

解密消息隊列的復制魔法&#xff1a;RocketMQ vs Kafka 今天我們來聊聊一個在消息隊列世界中至關重要的主題&#xff1a;消息復制。消息復制不僅能防止消息丟失&#xff0c;還能確保系統的高可用性。即使某個節點宕機了&#xff0c;其他節點依然可以繼續工作。那么&#xff0c…

區間選點問題-貪心-C++

問題&#xff1a; 給定 &#x1d441; 個閉區間 [ai,bi]&#xff0c;請你在數軸上選擇盡量少的點&#xff0c;使得每個區間內至少包含一個選出的點。 輸出選擇的點的最小數量。 位于區間端點上的點也算作區間內。 輸入格式 第一行包含整數 &#x1d441;&#xff0c;表示區間數…

CSS文本粒子動畫特效之愛心粒子文字特效-Canvas

1. 效果圖 2.完整代碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;paddin…

order by工作過程和優化

工作過程 order by 是由優化器決定的&#xff0c;如果優化器認為filesort速度快&#xff0c;那么走filesort排序&#xff0c;如果優化器認為索引速度快&#xff0c;那么走索引排序。

有一個3x4的矩陣,求矩陣中所有元素中的最大值。要求用函數處理

解此題的算法已在之前的文章中介紹&#xff0c;詳見&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/139181787 編寫程序&#xff1a; 運行結果&#xff1a;

常用的字符串方法

length() 返回字符串的長度。 let str "HelloWorld"; console.log(str.length); // 10charAt() 返回指定位置的字符。參數&#xff1a;位置索引。 let str "HelloWorld"; console.log(str.charAt(5)); // Wconcat() 連接字符串。參數&#xff1a;一…

昵稱生成器

package mainimport ("math/rand" )// 隨機昵稱 形容詞 var nicheng_tou []string{"迷你的", "鮮艷的", "飛快的", "真實的", "清新的", "幸福的", "可耐的", "快樂的", "冷…