`

OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量

 
阅读更多

使用OpenCV可以提分别提取显示一张图片(或者视频)的R,G,B颜色分量。效果如下。

 

原图:

R:

G:

B:

 

示例代码如下,貌似很久以前网上找的的,逻辑很清晰,就是把R,G,B三个分量分开,然后显示出来,就不注释了。

 

 

#include "cv.h"
#include "highgui.h"
#include <cxcore.h>


void main(int argc,char **argv)
{
    IplImage *img=cvLoadImage("test.bmp",1);
    IplImage *channel_r=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
    IplImage *channel_g=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
    IplImage *channel_b=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
    IplImage *img_r=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
    IplImage *img_g=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
    IplImage *img_b=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);

        cvSplit(img,channel_b,channel_g,channel_r,NULL);
	cvMerge(channel_b,0,0,0,img_b);
	cvMerge(0,channel_g,0,0,img_g);
	cvMerge(0,0,channel_r,0,img_r);

	cvNamedWindow("ImageOrigin",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Image_R",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Image_G",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Image_B",CV_WINDOW_AUTOSIZE);
	cvShowImage("ImageOrigin",img);
	cvShowImage("Image_R",img_r);
	cvShowImage("Image_G",img_g);
	cvShowImage("Image_B",img_b);

	cvSaveImage("img_red.bmp",img_r);
	cvSaveImage("img_green.bmp",img_g);
	cvSaveImage("img_blue.bmp",img_b);

	cvWaitKey(0);
	cvReleaseImage(&img);
	cvReleaseImage(&img_r);
	cvReleaseImage(&img_g);
	cvReleaseImage(&img_b);
	cvDestroyAllWindows();
}

 

 



分享到:
评论

相关推荐

    python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法

    本篇文章将详细介绍如何使用Python的OpenCV库读取图片,并获取特定像素点的B(蓝色)、G(绿色)和R(红色)通道的值。 首先,确保已经安装了OpenCV库。如果没有安装,可以使用pip进行安装: ``` pip install ...

    opencv检测红色区域

    在RGB色彩模型中,红色由高红色分量(R)和较低的绿色分量(G)和蓝色分量(B)组成。因此,我们可以通过设定R、G、B的阈值范围来筛选出红色像素。OpenCV提供了`cv2.inRange()`函数来实现这个功能,我们可以定义一个...

    Java获取彩色图像中的主色彩的实例代码

    每个像素的颜色值可以用三个分量的值来表示,即R、G和B三个分量的值。 知识点三:图像灰度化 图像灰度化是将彩色图像转换为灰度图像的过程。灰度化可以减少图像的颜色信息,保留图像的亮度信息。灰度化可以使用...

    第三节 图像处理之色彩空间

    这个函数展示了如何将一张图像转换为不同的色彩空间,并显示每个色彩空间的结果。这有助于直观地理解不同色彩空间的特点。 3. **多通道的分离与合并**: ```python b, g, r = cv.split(src) # 分离多通道图像 cv...

    FZU2021计算机视觉答案(四)

    - 接着,创建三个数组(count_b, count_g, count_r),它们分别用于统计蓝色、绿色和红色通道的像素值。 - 通过双重循环遍历图像的每个像素,将其RGB值转换为整数,并在相应的数组位置上增加计数。 - 最后,将...

Global site tag (gtag.js) - Google Analytics