标题:关于opencv的cvEqualizeHist函数直方图均衡化应用于单通道图像的问题
只看楼主
ljyoicqn
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-11-21
 问题点数:0 回复次数:0 
关于opencv的cvEqualizeHist函数直方图均衡化应用于单通道图像的问题
各位,请教一下,我用cvEqualizeHist函数对单通道的bmp图像进行直方图均衡化处理的时候,一定要先将灰度图复制到3个通道么?我直接对读入的图像进行cvEqualizeHist函数不能运行,只有通过cvsplit函数讲图像复制到三个通道,并针对每个单独通道进行cvEqualizeHist函数,再将结果返回读入图像才能得到正确的效果,可是不是应该可以直接对读入的图像进行操作么?请问是我程序的问题还是函数本身就只能这样用?
我的程序:
    #include "cv.h"  
    #include "highgui.h"  
#include "stdio.h"
    int main(void)  
    {  
        IplImage *image1 = cvLoadImage("1.bmp",1);  
        IplImage *redImage = cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);  
        IplImage *greenImage = cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);  
        IplImage *blueImage = cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);  
      
        cvSplit(image1,redImage,greenImage,blueImage,NULL);
        cvEqualizeHist( redImage, redImage );
//请大家看看上面这句,只能在redImage上进行这个命令,如果改为
//cvEqualizeHist( image1, image1 );运行就会报错。这是什么呢?
        cvNamedWindow("hello",CV_WINDOW_AUTOSIZE);  
        image1 = redImage;
        cvShowImage("hello",image1);  
        cvWaitKey(0);
        cvSaveImage( "2.bmp",image1);
      
        return 0;  


    }
搜索更多相关主题的帖子: include 直方图 通道 
2011-12-23 23:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358505-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.178200 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved