admin 管理员组

文章数量: 887021

【图像处理】

【图像处理】-019 补色

文章目录

  • 1 补色
  • 2 OpenCV实现
  • 3 效果图

1 补色

  在学习灰度图像处理的时候,有一种操作可以形成照片底片的效果。这种操作将灰度值设置为255与该灰度值的差。

  在彩色图像处理中,也有类似的操作,通过将彩色图像的色调设置为在彩色环上直接相对的另一端的值,来进行补色。

2 OpenCV实现

在实现的过程中,主要有两种思路,一种是取图像的H分量,进行“反转”之后生成结果图像,另一种是和灰度图一样处理,对RGB三个通道分别进行反转,即用255-RGB,得到结果图像。

#include "../include/importOpenCV.h"
#include "../include/baseOps.h"
#include "../include/opencv400/opencv2/core.hpp"
#include <iostream>
#include <algorithm>int main()
{//将工作目录设置到EXE所在的目录。SetCurrentDirectoryToExePath();cv::Mat src = cv::imread("../images/5.jpg");cv::imshow("原图", src);cv::Mat output;src.copyTo(output);if (src.channels() == 3){cv::Mat hsvImg;cv::cvtColor(src, hsvImg, cv::COLOR_BGR2HSV);std::vector<cv::Mat> hsv;cv::split(hsvImg, hsv);hsv[0] =( cv::Scalar::all(180) - hsv[0]);cv::merge(hsv, output);cv::imshow("补色HSV", output);output = cv::Scalar::all(255) - src;cv::imshow("补色RGB", output);}else{output = cv::Scalar::all(255) - src;cv::imshow("补色", output);}cv::waitKey();return 0;
}

3 效果图

从结果图中可以看出,取H进行补色的结果更贴近定义。例如图中女孩的红色衣服,补色应该是黄色,而RGB补色结果中颜色更靠近蓝色。

本文标签: 图像处理