OpenCV读取图像问题求助!
操作: 用opencv读取rgb图像,显示,将该rgb图像转成灰度图像。
程序如下:
#include "cv.h"
#include "highgui.h"
#include "iostream.h"
#include "stdlib.h"
int main()
{
IplImage *img,*image1 ,*grayImage;
uchar *ImageData;
int height,width,step,chanel;
int i=0,j=0;
int R,G,B;
img=cvLoadImage("yue1.jpg",1);
if(img==NULL)
{
cout<<"Image does not exits!"<<endl;
exit(1);
}
cvNamedWindow("OriginalImage",0);
cvResizeWindow("OriginalImage",400,300);
cvMoveWindow("OriginalImage",400,100);
cvShowImage("OriginalImage",img);
image1=cvCreateImage(cvSize(img->height,img->width),IPL_DEPTH_8U,3);
grayImage=cvCreateImage(cvSize(img->height,img->width),IPL_DEPTH_8U,1);
ImageData=(uchar *)img->imageData;
height=img->height;
width=img->width;
chanel=img->nChannels;
step=img->widthStep;
cout<<"step="<<step<<endl;
cout<<"width="<<width<<endl;
cout<<"height="<<height<<endl;
int tmp;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
R=ImageData[i*step+j*chanel+0];
G=ImageData[i*step+j*chanel+1];
B=ImageData[i*step+j*chanel+2];
tmp=(R+G+B)/3;
((grayImage->imageData+grayImage->widthStep*i))[j]=tmp;
}
}
cvNamedWindow("gray",0);
cvResizeWindow("gray",400,300);
cvShowImage("gray",grayImage);
cvWaitKey(0);
cvDestroyWindow("OriginalImage");
cvDestroyWindow("gray");
return 0;
}
问题:源图像尺寸:800*600,但是转成灰度图像以后就不对了,灰度图像只有原图像的一部分,这里不能上传图像,没办法给出世纪的效果图。跟踪运行了一下看到图像的尺寸有问题,跟踪调试时图像的尺寸并非原来的800*600,但是经过程序的输出语句输出的尺寸却是800*600,真的很奇怪,不知道哪里有问题,请帮忙。谢谢。