灰度直方图及处理“cvQueryHistValue_1D”: 找不到标识符”的问题(上)
来源:互联网 发布:oppo官方软件商店 编辑:程序博客网 时间:2024/04/30 08:22
- // HIstogram.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include "opencv2/opencv.hpp"
- #define cvQueryHistValue_1D( hist, idx0 ) \
- ((float)cvGetReal1D( (hist)->bins, (idx0)))
- int main()
- {
- IplImage* src= cvLoadImage("F:\\Opencv_picture\\05.jpg");
- IplImage* gray_dst= cvCreateImage(cvGetSize(src), 8, 1);
- cvCvtColor(src, gray_dst, CV_BGR2GRAY);
- //一维维数
- int dims= 1;
- //直方图的尺寸
- int size= 256;
- //直方图的高度
- int height = 256;
- //灰度图的范围0到255
- float range[]= {0, 256};
- float *ranges[]= {range};
- //创建一维直方图
- CvHistogram* hist;
- hist= cvCreateHist(dims, &size, CV_HIST_ARRAY, ranges, 1);
- //计算灰度图的一维直方图
- cvCalcHist(&gray_dst, hist, 0, 0);
- //归一化直方图
- cvNormalizeHist(hist, 1.0);
- int scale= 2;
- //创建图像,用于显示直方图
- IplImage* hist_img= cvCreateImage(cvSize(size* scale, height), 8, 3);
- //图像置零
- cvZero(hist_img);
- //计算直方图的最大方块值,初始化为0
- float max_value= 0;
- cvGetMinMaxHistValue(hist, 0, &max_value, 0, 0);
- //绘制直方图
- for(int i=0; i<size; i++)
- {
- float bin_val= cvQueryHistValue_1D(hist, i); //像素i的概率
- int intensity = cvRound(bin_val* height/ max_value); // 绘制的高度
- cvRectangle(hist_img,
- cvPoint(i* scale, height- 1),
- cvPoint((i+1)* scale- 1, height- intensity),
- CV_RGB(255, 255, 255));
- }
- cvNamedWindow("gray");
- cvShowImage("gray", gray_dst);
- cvNamedWindow("Histogram");
- cvShowImage("Histogram", hist_img);
- cvWaitKey(0);
- cvReleaseImage(&src);
- cvReleaseImage(&gray_dst);
- cvReleaseImage(&hist_img);
- cvDestroyWindow("gray");
- cvDestroyWindow("Histogram");
- }
看了小魏的修行路写的灰度直方图后写的,但我写的程序中出现f:\编程杂物区\histogram\histogram\histogram.cpp(45) : error C3861: “cvQueryHistValue_1D”: 找不到标识符的错误。经过搜索在程序中添加了
- #define cvQueryHistValue_1D( hist, idx0 ) \
- ((float)cvGetReal1D( (hist)->bins, (idx0)))
但是一样的程序(没有添加程序)在VC++6.0+opencv1.0上就不会出现报错的问题
- // HIstogram.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include "cv.h"
- #include "highgui.h"
- int main()
- {
- IplImage* src= cvLoadImage("F:\\Opencv_picture\\05.jpg");
- IplImage* gray_dst= cvCreateImage(cvGetSize(src), 8, 1);
- cvCvtColor(src, gray_dst, CV_BGR2GRAY);
- //一维维数
- int dims= 1;
- //直方图的尺寸
- int size= 256;
- //直方图的高度
- int height = 256;
- //灰度图的范围0到255
- float range[]= {0, 256};
- float *ranges[]= {range};
- //创建一维直方图
- CvHistogram* hist;
- hist= cvCreateHist(dims, &size, CV_HIST_ARRAY, ranges, 1);
- //计算灰度图的一维直方图
- cvCalcHist(&gray_dst, hist, 0, 0);
- //归一化直方图
- cvNormalizeHist(hist, 1.0);
- int scale= 2;
- //创建图像,用于显示直方图
- IplImage* hist_img= cvCreateImage(cvSize(size* scale, height), 8, 3);
- //图像置零
- cvZero(hist_img);
- //计算直方图的最大方块值,初始化为0
- float max_value= 0;
- cvGetMinMaxHistValue(hist, 0, &max_value, 0, 0);
- //绘制直方图
- for(int i=0; i<size; i++)
- {
- float bin_val= cvQueryHistValue_1D(hist,i); //像素i的概率
- int intensity = cvRound(bin_val* height/ max_value); // 绘制的高度
- cvRectangle(hist_img,
- cvPoint(i* scale, height- 1),
- cvPoint((i+1)* scale- 1, height- intensity),
- CV_RGB(255, 255, 255));
- }
- cvNamedWindow("gray");
- cvShowImage("gray", gray_dst);
- cvNamedWindow("Histogram");
- cvShowImage("Histogram", hist_img);
- cvWaitKey(0);
- cvReleaseImage(&src);
- cvReleaseImage(&gray_dst);
- cvReleaseImage(&hist_img);
- cvDestroyWindow("gray");
- cvDestroyWindow("Histogram");
- return 0;
- }
结果图:
0 0
- 灰度直方图及处理“cvQueryHistValue_1D”: 找不到标识符”的问题(上)
- 灰度直方图及处理“cvQueryHistValue_1D”: 找不到标识符”的问题(上)
- 错误解析->“cvQueryHistValue_1D”: 找不到标识符
- 灰度直方图均衡化(上)
- 【OpenCV图像处理】十、图像的直方图及相关处理(上)
- 图像基本处理系列:灰度处理(1):灰度图像和灰度直方图
- 灰度图像的直方图
- 灰度直方图的显示
- 灰度图像的直方图
- 图像的灰度直方图
- 图像的灰度直方图
- 图像处理 灰度直方图变换
- 数字图像处理之灰度直方图
- 灰度图像直方图均衡处理
- 图像处理 灰度图像直方图
- 灰度直方图及直方图均衡化
- OpenCV图像处理 图像的点运算 ( 灰度直方图 )
- 数字图像处理之灰度图的直方图均衡化
- Mat - 基本图像容器
- JVM 自定义的类加载器的实现和使用
- 数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行
- 初始EF
- HDOJ——简单题3(1013,1014)
- 灰度直方图及处理“cvQueryHistValue_1D”: 找不到标识符”的问题(上)
- 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理
- Oracle 各个服务的作用
- MyBatis映射文件中多参数传递的问题
- Hadoop2.2.0 中错误总结之(org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test._COPYING)
- iOS开发—OC语言Foundation框架(一)—NSObject常用方法
- VisualSVN Server如何设置commit的时候,必须填写log
- 使用Docker Hub官方gcc:latest镜像编译C/C++程序以及缩小镜像的方法
- c++ 读写文件操作