如何使用opencv获得红外/热视觉
How to obtain infra red / heat vision using opencv
我想实现红外视觉效果(电影中外星人通常使用的视觉),就像铁血战士2[=25]中使用的那样=] - 使用 OpenCV。
我已经搜索过了,但有人指出红外滤镜是使用支持它的网络摄像头硬件制作的。
有什么方法可以用OpenCV实现上述图片接近的效果吗?我不确定自己到底要搜索什么功能。需要来自 OpenCV / Image Processing Expertise 的建议和指导。谢谢
正如 @Wojciech Frohmberg 在评论中指出的那样,从光源 (RGB) 中提取红外线通道是不可能的,除非你有一个可以检测红外线的相机只。更多信息可以阅读 this forum and wiki.
为了达到最接近的效果,我使用了 HSV ColorMap 正如 @berak 在评论中指出的那样,感谢他。
cv::applyColorMap (InputArray src, OutputArray dst, int colormap)
效果:
代码:
-(cv::Mat) convertIntoAlienVision:(cv::Mat)inputImage
{
cv::Mat grayMat;
if(inputImage.channels() == 1)
grayMat = inputImage;
else{
grayMat = cv::Mat(inputImage.rows, inputImage.cols, CV_8UC3);
cv::cvtColor(inputImage, grayMat, CV_BGR2GRAY);
}
cv::Mat coloredImage;
cv::applyColorMap(grayMat, coloredImage, cv::COLORMAP_HSV);
return coloredImage;
}
我想实现红外视觉效果(电影中外星人通常使用的视觉),就像铁血战士2[=25]中使用的那样=] - 使用 OpenCV。
我已经搜索过了,但有人指出红外滤镜是使用支持它的网络摄像头硬件制作的。
有什么方法可以用OpenCV实现上述图片接近的效果吗?我不确定自己到底要搜索什么功能。需要来自 OpenCV / Image Processing Expertise 的建议和指导。谢谢
正如 @Wojciech Frohmberg 在评论中指出的那样,从光源 (RGB) 中提取红外线通道是不可能的,除非你有一个可以检测红外线的相机只。更多信息可以阅读 this forum and wiki.
为了达到最接近的效果,我使用了 HSV ColorMap 正如 @berak 在评论中指出的那样,感谢他。
cv::applyColorMap (InputArray src, OutputArray dst, int colormap)
效果:
代码:
-(cv::Mat) convertIntoAlienVision:(cv::Mat)inputImage
{
cv::Mat grayMat;
if(inputImage.channels() == 1)
grayMat = inputImage;
else{
grayMat = cv::Mat(inputImage.rows, inputImage.cols, CV_8UC3);
cv::cvtColor(inputImage, grayMat, CV_BGR2GRAY);
}
cv::Mat coloredImage;
cv::applyColorMap(grayMat, coloredImage, cv::COLORMAP_HSV);
return coloredImage;
}