用c++怎样从彩色图像中分解出R,G,B分量,并且分别保存用c++语言编程,怎样从一幅彩色图像中提取R,G,B三个分量并且分别保存?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 16:21:02
![用c++怎样从彩色图像中分解出R,G,B分量,并且分别保存用c++语言编程,怎样从一幅彩色图像中提取R,G,B三个分量并且分别保存?](/uploads/image/z/13844005-61-5.jpg?t=%E7%94%A8c%2B%2B%E6%80%8E%E6%A0%B7%E4%BB%8E%E5%BD%A9%E8%89%B2%E5%9B%BE%E5%83%8F%E4%B8%AD%E5%88%86%E8%A7%A3%E5%87%BAR%2CG%2CB%E5%88%86%E9%87%8F%2C%E5%B9%B6%E4%B8%94%E5%88%86%E5%88%AB%E4%BF%9D%E5%AD%98%E7%94%A8c%2B%2B%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%2C%E6%80%8E%E6%A0%B7%E4%BB%8E%E4%B8%80%E5%B9%85%E5%BD%A9%E8%89%B2%E5%9B%BE%E5%83%8F%E4%B8%AD%E6%8F%90%E5%8F%96R%2CG%2CB%E4%B8%89%E4%B8%AA%E5%88%86%E9%87%8F%E5%B9%B6%E4%B8%94%E5%88%86%E5%88%AB%E4%BF%9D%E5%AD%98%3F)
用c++怎样从彩色图像中分解出R,G,B分量,并且分别保存用c++语言编程,怎样从一幅彩色图像中提取R,G,B三个分量并且分别保存?
用c++怎样从彩色图像中分解出R,G,B分量,并且分别保存
用c++语言编程,怎样从一幅彩色图像中提取R,G,B三个分量并且分别保存?
用c++怎样从彩色图像中分解出R,G,B分量,并且分别保存用c++语言编程,怎样从一幅彩色图像中提取R,G,B三个分量并且分别保存?
单单是图像的加载不是一两句代码就能搞定的.
如果你做图像方面的,不妨看看《Visual C++ 数字图像处理典型算法及实现》
推荐 opencv库,简单易学
例如使用opencv分离R,G,B三个分量有很多方法,如下:而且保存只需一个cvSave()函数.
#include
#include
int main(int argc,char** argv)
{
IplImage* src = cvLoadImage( argv[1],1 );
IplImage * RedChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * GreenChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * BlueChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * alphaChannel = cvCreateImage( cvGetSize(src),8,1);
cvSetImageCOI(src,1);
cvCopy(src,BlueChannel); //提取蓝色
cvSetImageCOI(src,2);
cvCopy(src,GreenChannel); //提取绿色
cvSetImageCOI(src,3);
cvCopy(src,RedChannel); //提取红色
cvNamedWindow( "RedChannel",1 );
cvNamedWindow( "GreenChannel",1 );
cvNamedWindow( "BlueChannel",1 );
cvNamedWindow( "lphaChannel",1 );
cvShowImage( "RedChannel",RedChannel );
cvShowImage( "GreenChannel",GreenChannel );
cvShowImage( "BlueChannel",BlueChannel );
cvShowImage( "lphaChannel",alphaChannel );
cvWaitKey(0);
cvReleaseImage( &RedChannel );
cvReleaseImage( &GreenChannel );
cvReleaseImage( & BlueChannel );
cvReleaseImage( & alphaChannel );
return 0;
}
/*#include
#include
int main(int argc,char** argv)
{
IplImage* src = cvLoadImage( argv[1],1 );
IplImage * RedChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * GreenChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * BlueChannel = cvCreateImage( cvGetSize(src),8,1);
IplImage * alphaChannel = cvCreateImage( cvGetSize(src),8,1);
cvCvtPixToPlane(src,BlueChannel,GreenChannel,RedChannel,NULL);
cvNamedWindow( "RedChannel",1 );
cvNamedWindow( "GreenChannel",1 );
cvNamedWindow( "BlueChannel",1 );
cvNamedWindow( "lphaChannel",1 );
cvShowImage( "RedChannel",RedChannel );
cvShowImage( "GreenChannel",GreenChannel );
cvShowImage( "BlueChannel",BlueChannel );
cvShowImage( "lphaChannel",alphaChannel );
cvWaitKey(0);
cvReleaseImage( &RedChannel );
cvReleaseImage( &GreenChannel );
cvReleaseImage( & BlueChannel );
cvReleaseImage( & alphaChannel );
return 0;
}
*/