求救用C++绘直方图

来源:百度知道 编辑:UC知道 时间:2024/06/01 20:02:08
设计要求:同前面画曲线类似,绘制一个两维坐标,在坐标轴上标出刻度,并用阿拉伯数字标出。按照X轴方向,每隔一个坐标点,绘制一个有一定高度和宽度的矩形,构成直方图。直方图的数据和前面一样由数组给出:int data[]={7,3,12,6,9,5,8,11};
涉及知识:除有图形函数的调用之外,还有矩形图形的绘制/封闭图形的填充等。
相关函数:bar()函数 setfillstyle()函数
最好能照这个题目编下 谢谢了

单通道图像的直方图(C/C++源代码)

计算并绘制单通道图像的直方图。在MATLAB中绘制直方图是一件非常简单的事情,可是到了C环境下,竟然变成了一个问题。各种实现方法都有,而且要自己动手重新编程。幸好有了OPENCV。下面的代码要求OPENCV4.0的支持,并在VC6中编译通过。
转自阿须数码

//
// 对单通道图像做直方图
//
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <ctype.h>
int main( int argc, char** argv )
{
IplImage *src = 0;
IplImage *histimg = 0;
CvHistogram *hist = 0;

int hdims = 50; // 划分HIST的个数,越高越精确
float hranges_arr[] = {0,255};
float* hranges = hranges_arr;
int bin_w;
float max_val;
int i;

if( argc != 2 || (src=cvLoadImage(argv[1], 0)) == NULL) // force to gray image
return -1;

cvNamedWindow( "Histogram", 1 );
hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); // 计算直方图
histimg = cvCreateImage( cvSize(320,200), 8, 3 );
cvZero( histimg );

cvCalcHist( &src, hist, 0, 0 ); // 计算直方图