碰到的问题和解决:
1。在将图像转化成灰度的时候发生了错误,用的是cvCvtColor函数,但是出现了错误。
试过了几遍都没有效果,不过后来发现可能是通道的原因,改正之后,又与前面的有冲突,这个时候突然向导要先做一个判断截取图像大小的功能。所以刚好建立一个新的灰度图像,通道设置为1,然后实现了将这个赋值过去的,得到大小合适,而且是灰度的图像。
2.出现了不合适的type,原因是采用的参数不对,或者是前后的内容不一致。比如说在进行直方图采样的时候,参数传递是有讲究的,如果不慎,容易出现错误。
3.MFC中出现错误。this指针只能用在当前类中,而在static函数中,如果出现就会报错,很明显的错误,java老师也讲过,static是类变量,而this是针对于一个实例的。
4.结构体内容,特别是IplImage结构体有很大的作用,其中,height和width都一个重要的作用,还有,你要重新定义一个大小的话,用cvResize函数来实现,因为这个函数可以实现将目标图像结构的指针转化成你要得到的图像。此时就可以将其转化成灰度图像。
1 if ((height>200)||(width>200))
2 {
3 IplImage *tmp = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
4 cvResize(newImg, tmp, CV_INTER_LINEAR); //缩放源图像到目标图像
5 IplImage *greyImage = cvCreateImage(cvSize(tmp->width,tmp->height),IPL_DEPTH_8U,1);
6 cvCvtColor(tmp,greyImage,CV_BGR2GRAY);
7 cvSaveImage(outfilename,greyImage);
8 }
9 else
10 {
11 IplImage *greyImage = cvCreateImage(cvSize(newImg->width,newImg->height),IPL_DEPTH_8U,1);
12 cvCvtColor(newImg,greyImage,CV_BGR2GRAY);
13 cvSaveImage(outfilename,greyImage);
14 }
5.具体的参数,特别是那些定义的宏,是有特殊意义的。
一个样例,本来生成的灰度图片应该是bmp格式,无奈不支持,所以截图来处理。
posted on 2009-12-19 20:49
deercoder 阅读(5836)
评论(2) 编辑 收藏 引用 所属分类:
OpenCV / OpenGL