首页 > 学院 > 开发设计 > 正文

有关opencv的学习(7)—图片的特效显示

2019-11-06 07:16:18
字体:
来源:转载
供稿:网友

之前了解了图像的HSV色彩空间,使用HSV的值可以生成一些非常有趣的效果。有些用照片编辑软件所生成的色彩特效,就是用HSV色彩空间实现的。

如下,可以修改一个图像,将其所有像素设置为一个固定饱和度,不改变其色调和亮度,代码如下:

#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int main( ){    Mat image=imread("/Users/zhangxiaoyu/Desktop/1.png");    if(image.empty())  {     cout<<"Error!cannot be read...../n";     return -1;    }        //转换为HSV色彩空间    Mat hsv;    cvtColor(image, hsv, CV_BGR2HSV);//把三个通道分割进三个图像中    vector<Mat>channels;    split(hsv, channels);    //channels[0]是色调    //channels[1]是饱和度    //channels[2]是亮度        channels[1]=255;//将所有像素的颜色饱和度通道变成255   // channels[2]=200;//将所有像素的亮度通道变成255        merge(channels, hsv);//重新合并通道        Mat newimage;    cvtColor(hsv, newimage, CV_HSV2BGR);//转换回BGR        namedWindow("newimage");    imshow("newimage", newimage);    waitKey(0);    }结果如下所示:

得到的效果像一幅油画。

原始图片如下所示:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表