“cvRectangle”: 不能将参数 1 从“cv::Mat”转换为“CvArr *” 两个错误不会修改
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main( int argc, char**argv )
{
Mat src;
if( argc != 2 || !(src=imread("1.jpg", 1)).data)return -1;
Mat hsv;
cvtColor(src, hsv, CV_BGR2HSV);
// let’s quantize the hue to 30 levels
// and the saturation to 32 levels
int hbins = 30, sbins = 32;
int histSize[] = {hbins, sbins};
// hue varies from 0 to 179, see cvtColor
float hranges[] = { 0, 180 };
// saturation varies from 0 (black-gray-white) to
// 255 (pure spectrum color)
float sranges[] = { 0, 256 };
const float
*
ranges[] = { hranges, sranges };
MatND hist;
// we compute the histogram from the 0-th and 1-st channels
int channels[] = {0, 1};
calcHist( &hsv, 1, channels, Mat(), // do not use mask
hist, 2, histSize, ranges,
true, // the histogram is uniform
false );
double maxVal=0;
minMaxLoc(hist, 0, &maxVal, 0, 0);
int scale = 10;
Mat histImg = Mat::zeros(sbins
*
scale, hbins
*
10, CV_8UC3);
for( int h = 0; h < hbins; h++ )
for( int s = 0; s < sbins; s++ )
{
float binVal = hist.at<float>(h, s);
int intensity = cvRound(binVal*255/maxValue);
cvRectangle( histImg, Point(h*scale, s*scale),Point( (h+1)*scale - 1, (s+1)*scale - 1),Scalar::all(intensity),CV_FILLED );
}
namedWindow( "Source", 1 );
imshow( "Source", src );
namedWindow( "H-S Histogram", 1 );
imshow( "H-S Histogram", histImg );
waitKey();
return 0;
}
编译之后显示:
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1>正在编译...
1>图片.cpp
1>d:\backup\我的文档\visual studio 2008\projects\test\test\图片.cpp(42) : error C2664: “cvRectangle”: 不能将参数 1 从“cv::Mat”转换为“CvArr *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>生成日志保存在“file://d:\Backup\我的文档\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm”
1>test - 1 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
不知道这两个错误该怎么改了哦···