IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++自写直方图(初学) -> 正文阅读

[C++知识库]C++自写直方图(初学)

?Opencv,C++环境下

初学,如有问题,可及时沟通交流

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void hist(Mat& src,int h,int w)
{
    int rows=src.rows;//图像的高
    int cols=src.cols;//图像的宽
    int N=rows*cols;//图像的大小
    long src_count[256];//每个像素对应的个数
    memset(src_count,0,sizeof(src_count));//对数组进行初始化为0
    //计算像素对应的个数
    for(int i=0;i<rows;i++)
    {
        uchar*p=src.ptr<uchar>(i);
        for(int j=0;j<cols;j++)
        {
            for(int k=0;k<256;k++)
               {
                   if((int)p[j]==k)
                    {
                       src_count[k]++;
                    }
                }
         }
     }
    //h //直方图的高
	//w //直方图的宽
	Mat src_hist = Mat::zeros(h, w, CV_8UC3);//直方图初始化
	int c_max = 0;
	int c_min = 10000000;
    //比较每个像素对应个数得最大值,最小值
	for (int k = 0; k < 256; k++)
	{
		c_min = (c_min <= src_count[k]) ? c_min : src_count[k];
		c_max = (c_max >= src_count[k]) ? c_max : src_count[k];
	}
    //将像素个数的大小,(缩放)自适应至直方图的高
	for (int k = 0; k < 256; k++)
	{
		src_count[k] = h * (src_count[k] - c_min) / (c_max - c_min);
	}
    //将0-255(缩放)自适应至直方图的宽
	int x[256];
	for (int i = 0; i < 256; i++)
	{
		x[i] = w * i / 255;
	}
    //在直方图中画线
	for (int i = 0; i < 255; i++)
	{
		line(src_hist, Point(x[i], h - src_count[i]), Point(x[i + 1], h - src_count[i + 1]),Scalar(0,255,0), 1, LINE_AA);
	}
    //输出直方图
	imshow("src_hist_512*512", src_hist);
}

int main()
{
    Mat src=imread("Lena.jpg",0);
    imshow("src_512*512",src);
    hist(src,512,512);
    waitKey(0);
    return 0;
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 08:51:02  更:2021-08-28 08:51:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 21:19:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计