我是靠谱客的博主 活泼学姐,最近开发中收集的这篇文章主要介绍随笔:RGB图像颜色分离(附代码),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本来想写几个灰度化的函数,感觉灰灰的图像没意思,所以就写了这个;

将BGR的三原色分离:代码如下
方法1:

	uchar* pImgB = new uchar[col*row*3]; 
	uchar* pImgG = new uchar[col * row * 3];
	uchar* pImgR = new uchar[col * row * 3];

	for (int i = 0; i < row * col * 3; i+=3)
	{
		pImgB[i] = pImg[i];              //分离出蓝色
		pImgB[i + 1] = 0;
		pImgB[i + 2] =0;

		pImgG[i] = 0;                    //分离出绿色
		pImgG[i + 1] = pImg[i + 1];
		pImgG[i + 2] = 0;

		pImgR[i] = 0;                    //分离出红色
		pImgR[i + 1] = 0;
		pImgR[i + 2] = pImg[i + 2];
		
	}
	delete[] pImgB;
	delete[] pImgG;
	delete[] pImgR;

使用opencv的指针(较方法1慢30倍)
方法2:

for (int i = 0; i < img.rows; i ++)
	{
		for (int j = 0; j < img.cols; j++)
		{
			*imgB.ptr(i, j) = *img.ptr(i, j);                    //分离出蓝色
			*(imgB.ptr(i, j) + 1) = 0;
			*(imgB.ptr(i, j) + 2) = 0;

			*imgG.ptr(i, j) = 0;								 //分离出蓝色
			*(imgG.ptr(i, j) + 1) = *(img.ptr(i, j) + 1);
			*(imgG.ptr(i, j) + 2) = 0;

			*imgR.ptr(i, j) = 0;								 //分离出蓝色
			*(imgR.ptr(i, j) + 1) = 0;
			*(imgR.ptr(i, j) + 2) = *(img.ptr(i, j) + 2);
		}	
	}

最后

以上就是活泼学姐为你收集整理的随笔:RGB图像颜色分离(附代码)的全部内容,希望文章能够帮你解决随笔:RGB图像颜色分离(附代码)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部