最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv實現(xiàn)像素統(tǒng)計的示例代碼

 更新時間:2025年01月06日 08:54:43   作者:編碼小哥  
本文介紹了OpenCV中統(tǒng)計圖像像素信息的常用方法和函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在 OpenCV 中,統(tǒng)計圖像的像素信息(如像素值分布、最大值、最小值、均值等)是常見的操作。以下是一些常用的方法和函數(shù),用于統(tǒng)計圖像的像素信息:

1. 統(tǒng)計像素值的基本信息

  • 最大值、最小值、均值、標準差: 使用 cv::minMaxLoc() 和 cv::meanStdDev() 函數(shù)可以快速計算圖像的最大值、最小值、均值和標準差。
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 讀取灰度圖像
    if (image.empty()) {
        std::cerr << "Error: Could not load image!" << std::endl;
        return -1;
    }

    double minVal, maxVal;
    cv::Point minLoc, maxLoc;
    cv::minMaxLoc(image, &minVal, &maxVal, &minLoc, &maxLoc);

    cv::Scalar mean, stddev;
    cv::meanStdDev(image, mean, stddev);

    std::cout << "Min value: " << minVal << " at " << minLoc << std::endl;
    std::cout << "Max value: " << maxVal << " at " << maxLoc << std::endl;
    std::cout << "Mean: " << mean[0] << std::endl;
    std::cout << "Stddev: " << stddev[0] << std::endl;

    return 0;
}

2. 統(tǒng)計像素值的直方圖

  • 直方圖計算: 使用 cv::calcHist() 函數(shù)可以計算圖像的直方圖,用于分析像素值的分布。
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 讀取灰度圖像
    if (image.empty()) {
        std::cerr << "Error: Could not load image!" << std::endl;
        return -1;
    }

    // 定義直方圖參數(shù)
    int histSize = 256; // 直方圖的 bin 數(shù)量
    float range[] = {0, 256}; // 像素值范圍
    const float* histRange = {range};
    bool uniform = true, accumulate = false;

    cv::Mat hist;
    cv::calcHist(&image, 1, 0, cv::Mat(), hist, 1, &histSize, &histRange, uniform, accumulate);

    // 打印直方圖
    for (int i = 0; i < histSize; i++) {
        std::cout << "Bin " << i << ": " << hist.at<float>(i) << std::endl;
    }

    return 0;
}

3. 統(tǒng)計像素值的總和

  • 像素值求和: 使用 cv::sum() 函數(shù)可以計算圖像中所有像素值的總和。
cv::Scalar sum = cv::sum(image);
std::cout << "Sum of pixel values: " << sum[0] << std::endl;

4. 統(tǒng)計非零像素的數(shù)量

  • 非零像素統(tǒng)計: 使用 cv::countNonZero() 函數(shù)可以統(tǒng)計圖像中非零像素的數(shù)量。
int nonZeroCount = cv::countNonZero(image);
std::cout << "Non-zero pixel count: " << nonZeroCount << std::endl;

5. 統(tǒng)計像素值的分布(分通道)

  • 對于多通道圖像(如 RGB 圖像),可以分別統(tǒng)計每個通道的像素信息。
cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 讀取彩色圖像
std::vector<cv::Mat> channels;
cv::split(image, channels); // 分離通道

for (int i = 0; i < channels.size(); i++) {
    double minVal, maxVal;
    cv::minMaxLoc(channels[i], &minVal, &maxVal);
    std::cout << "Channel " << i << " - Min: " << minVal << ", Max: " << maxVal << std::endl;
}

6. 統(tǒng)計像素值的百分比

如果需要統(tǒng)計像素值的百分比(如 95% 的像素值小于某個閾值),可以通過直方圖計算累積分布函數(shù)(CDF )來實現(xiàn)。

cv::Mat hist;
cv::calcHist(&image, 1, 0, cv::Mat(), hist, 1, &histSize, &histRange, uniform, accumulate);

// 計算累積分布函數(shù)
for (int i = 1; i < histSize; i++) {
    hist.at<float>(i) += hist.at<float>(i - 1);
}

// 歸一化
hist /= image.total();

// 查找 95% 的像素值閾值
float threshold = 0.95;
int pixelValueThreshold = 0;
for (int i = 0; i < histSize; i++) {
    if (hist.at<float>(i) >= threshold) {
        pixelValueThreshold = i;
        break;
    }
}
std::cout << "95% of pixel values are below: " << pixelValueThreshold << std::endl;

通過以上方法,可以有效地統(tǒng)計和分析 OpenCV 圖像的像素信息。這些統(tǒng)計信息對于圖像處理、分析和特征提取等任務(wù)非常重要。根據(jù)具體需求,可以選擇合適的方法進行像素統(tǒng)計。 

到此這篇關(guān)于opencv實現(xiàn)像素統(tǒng)計的示例代碼的文章就介紹到這了,更多相關(guān)opencv 像素統(tǒng)計內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)雙向循環(huán)鏈表

    C++實現(xiàn)雙向循環(huán)鏈表

    這篇文章主要為大家詳細介紹了C++實現(xiàn)雙向循環(huán)鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C/C++中二進制文件&順序讀寫詳解及其作用介紹

    C/C++中二進制文件&順序讀寫詳解及其作用介紹

    這篇文章主要介紹了C/C++中二進制文件&順序讀寫詳解及其作用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • C語言實現(xiàn)數(shù)組轉(zhuǎn)置的代碼詳解

    C語言實現(xiàn)數(shù)組轉(zhuǎn)置的代碼詳解

    在現(xiàn)代計算中,數(shù)組是最基礎(chǔ)且最常用的數(shù)據(jù)結(jié)構(gòu)之一,無論是對圖像像素進行旋轉(zhuǎn),還是對大規(guī)模數(shù)值數(shù)據(jù)做格式轉(zhuǎn)換,都離不開“轉(zhuǎn)置(Transpose)”操作,所以本文將詳細介紹C語言實現(xiàn)數(shù)組轉(zhuǎn)置的方法,需要的朋友可以參考下
    2025-05-05
  • C++入門指南之貪吃蛇游戲的實現(xiàn)

    C++入門指南之貪吃蛇游戲的實現(xiàn)

    這篇文章主要給大家介紹了關(guān)于C++入門指南之貪吃蛇游戲?qū)崿F(xiàn)的相關(guān)資料,文章通過示例代碼介紹的非常詳細,可以讓大家能短時間內(nèi)寫出一個貪吃蛇,需要的朋友可以參考下
    2021-10-10
  • 深入分析C語言存儲類型與用戶空間內(nèi)部分布

    深入分析C語言存儲類型與用戶空間內(nèi)部分布

    這篇文章主要介紹了C語言存儲類型與用戶空間內(nèi)部分布,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • VS2019創(chuàng)建C++工程的的實現(xiàn)步驟

    VS2019創(chuàng)建C++工程的的實現(xiàn)步驟

    本文主要介紹了VS2019創(chuàng)建C++工程步驟,包含新建項目、編輯文件、配置源文件目錄、編譯鏈接、輸出文件、設(shè)置斷點調(diào)試,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • C++實現(xiàn)LeetCode(22.生成括號)

    C++實現(xiàn)LeetCode(22.生成括號)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(22.生成括號),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt實現(xiàn)鬧鐘小程序

    Qt實現(xiàn)鬧鐘小程序

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)鬧鐘小程序,利用Qt的designer設(shè)計需要的鬧鐘界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 貪心算法的C語言實現(xiàn)與運用詳解

    貪心算法的C語言實現(xiàn)與運用詳解

    這篇文章主要介紹了貪心算法的C語言實現(xiàn)與運用詳解,運用么,就是文中所附的ACM練習(xí)題,哈哈:D需要的朋友可以參考下
    2015-08-08
  • Matlab實現(xiàn)帶豎線散點的核密度圖的繪制

    Matlab實現(xiàn)帶豎線散點的核密度圖的繪制

    核密度估計是用于估計隨機變量概率密度函數(shù)的一種非參數(shù)方法。核密度圖不失為一種用來觀察連續(xù)型變量分布的有效方法。本文將用Matlab實現(xiàn)帶豎線散點的核密度圖的繪制,感興趣的可以了解一下
    2022-08-08

最新評論

奇台县| 海盐县| 建德市| 衡山县| 周宁县| 永康市| 凤山市| 靖安县| 武乡县| 汝城县| 乌拉特前旗| 台山市| 左权县| 竹溪县| 介休市| 东辽县| 太湖县| 安远县| 潍坊市| 平江县| 九寨沟县| 安阳县| 武定县| 西宁市| 武陟县| 红安县| 班戈县| 拉萨市| 昆明市| 巴南区| 平邑县| 邛崃市| 霞浦县| 沈阳市| 房产| 右玉县| 天祝| 双桥区| 新蔡县| 逊克县| 于田县|