C++ OpenCV/C++;-经过一些图像处理后,将灰度图像转换为BGR图像

C++ OpenCV/C++;-经过一些图像处理后,将灰度图像转换为BGR图像,c++,opencv,video,colors,C++,Opencv,Video,Colors,我正在做一个稳定视频的项目。 因此,在稳定过程中,我必须将帧转换为灰色,以便使用goodFeaturesToTrack()或opticalFlow()等方法 但在我的过程结束时,在使用warpAffine()应用上一次变换后,我希望恢复帧的颜色信息,但我无法做到这一点。我试过一些东西 我尝试使用cvtColor(外框、外框、CV_GRAY2BGR),但没有效果(显然)。还是白的 在循环开始时,我选择了原始图片的三个彩色通道B G R,如下所示: Mat通道[3] 分割(帧颜色、通道) 在这个

我正在做一个稳定视频的项目。 因此,在稳定过程中,我必须将帧转换为灰色,以便使用goodFeaturesToTrack()或opticalFlow()等方法

但在我的过程结束时,在使用warpAffine()应用上一次变换后,我希望恢复帧的颜色信息,但我无法做到这一点。我试过一些东西

  • 我尝试使用cvtColor(外框、外框、CV_GRAY2BGR),但没有效果(显然)。还是白的

  • 在循环开始时,我选择了原始图片的三个彩色通道B G R,如下所示:

    Mat通道[3]

    分割(帧颜色、通道)

在这个过程的最后,我会这样做:

 merge(channel,3,outFrame);
因此,我有我的帧的颜色,但不稳定,也就是说,它就像合并通道已删除所有的转换

  • 我还尝试对彩色图片使用warpAffine()函数,但得到了与上面相同的结果
请帮帮我

谢谢。

我解决了我的问题

实际上,当应用warpAffine()之类的变换时,必须将其应用于上一帧,而不是当前帧。我没有注意到我将它应用到了我当前的颜色框架,而不是以前的颜色框架。因此,没有任何变化


通过将其应用于我之前的彩色帧,图像是彩色的且稳定的。

也许您应该尝试在原始管道中对灰色图像进行循环,然后将扭曲仿射应用于彩色图像(通过每个通道)。光流/特征返回与彩色和灰度图像相关的信息。你能提供更多关于稳定过程的信息吗?对不起,我的英语不好。我也试着在原色框中使用warp功能,但结果是一样的:视频不稳定,而如果我使用黑白图片,效果很好。我已经编辑了我的帖子。