将单通道图像转换为3通道图像 C++ / OpenCV

我用 openCV C++

我需要将单通道图像转换为3通道。 所以我可以使用它:
cvCvtColor/result,gray,CV_BGR2GRAY/;


我不能这样做,因为IMG结果是单通道图像。 有任何想法吗?
已邀请:

裸奔

赞同来自:

你必须使用
CV_GRAY2BGR

反而
CV_BGR2GRAY

.

石油百科

赞同来自:

试试吧:


CvSize dim = cvSize/int width, int height/;
IplImage* dst = cvCreateImage/ dim, 8, 3 /;
IplImage* gray = cvCreateImage/dim, 8, 1/;
// Load the gray scale image
cvMerge/gray , NULL, NULL, NULL, dst/;
cvShowImage/"gray",gray/;
cvShowImage/"dst",dst/;
cvWaitKey/0/;


和 dst, 和 gray 必须具有相同的数据类型。 你不能只将浮动组合在矩阵中 uint. 为此,您必须使用 cvScale.

石油百科

赞同来自:

我检查了

cvtColor

在目录中 OpenCV 并发现它:

C++: void

cvtColor

/InputArray

src

, OutputArray

dst

, int

code

, int

dstCn

=0 /

dstCn

- 目标图像中的频道。 如果参数相等 0, 然后自动输出通道数 src 和代码 .

我用了


cvtColor/src,gray,CV_BGR2GRAY,1/;


将3通道地毯转换为1通道,并运行。 所以改变

dstCn

在 3 可以为你工作 :/

快网

赞同来自:

尝试结合灰色,灰色,灰色 BGR.

二哥

赞同来自:

恕我直言:
如果输入是灰色的,则输出将是灰色的。 你能得到的最好的事情 - 这是基于像素数据的颜色分布式图像,让我们说
/110, 110, 110/

用于像素数据
110

, 不是真实的彩色图像

要回复问题请先登录注册