交叉冲印滤镜

交叉冲印还有一个名字叫正片负冲,经过该滤镜修饰的照片亮部变黄,暗部变蓝,色彩更加艳丽。

来一张Lena女神的效果图:

再来一张风景效果图:

完整版代码如下:

#include<opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;void punchFilter(Mat &srcImage);int main(){Mat srcImage = imread("lena.jpg");//图片在工程目录下,否则写绝对路径if(!srcImage.data || srcImage.empty()){cout<<"读入图片错误!"<<endl;return -1;}imshow("原图",srcImage);punchFilter(srcImage);waitKey(0);return 0;
}void punchFilter(Mat &srcImage){int rowNum = srcImage.rows;int colNum = srcImage.cols;int gray, value;int rMap[256], gMap[256], bMap[256];for(int i = 0;i<256;i++){value = i < 128 ? i : 256 - i;gray = (int)pow(value,3) >> 14; // value的3次方再除以16384rMap[i] = i < 128 ? gray : 256 - gray;gray = (int)pow(value,2) >>7; // value的2次方再除以128gMap[i] = i < 128 ? gray : 256 - gray;bMap[i] = i / 2 + 0x25;//0x25 = 37}for(int j = 0;j<rowNum-1;j++){uchar* data = srcImage.ptr<uchar>(j);for(int i = 0;i<colNum-1;i++){int b = bMap[data[i*3]];int g = gMap[data[i*3+1]];int r = rMap[data[i*3+2]];data[i*3] = min(255, max(0, b));data[i*3+1] = min(255, max(0, g));data[i*3+2] = min(255, max(0, r));}}imshow("交叉冲印滤镜",srcImage);
}

参考文章:
参考文章

openCV学习记录:滤镜:交叉冲印相关推荐

  1. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别

    上一篇文章中介绍了如何使用OpenCV自带的haar分类器进行人脸识别(点我打开). 这次我试着自己去训练一个haar分类器,前后花了两天,最后总算是训练完了.不过效果并不是特别理想,由于我是在自己的 ...

  2. OpenCV学习记录(三):简单的使用图像掩膜提取图像中感兴趣对象

    OpenCV中给出了很多种提取对象特征的方法. 从简单的图像色块>图像阈值分割>轮廓查找>特征点检测>直方图检测等等有很多.这些简单的方法看似没有什么实际的场景可以直接拿来使用 ...

  3. 基于c++的opencv学习记录

    大纲 学习B站opencv快速入门30讲 课程链接:001 - 图像读取与显示_哔哩哔哩_bilibili 说明:课程所有的头文件放在最后面,所有的demo也在后面有总结!主函数的话改一个qd.就可以 ...

  4. OpenCV 学习记录7 图像实时磨皮及皮肤检测

    前言 今天学习了OpenCV里一些滤波的用法,感觉获益颇深,尤其是其中的双边滤波,完全可以达到磨皮的效果,原来还很纠结要如何实现磨皮美白,原来双边滤波就行了,当然如果要保留一些细节的话可能还需要用其他 ...

  5. OpenCV学习记录(一):使用haar分类器进行人脸识别

    OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).OpenCV2之后的C++接口除了Haar特征 ...

  6. python使用opencv查找轮廓_Python+opencv学习记录20:轮廓发现,Pythonopencv

    1.轮廓发现 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果. 1.1发现轮廓 在此步骤中我们会使用到findContours这个API,其原型为: ...

  7. 模糊处理(下)--高斯模糊,双边模糊以及实现一个简单的磨皮美颜效果(opencv学习记录--4)

    文章目录 1.高斯模糊 1.什么是高斯模糊 2.opencv提供的API 2.双边模糊 1.什么是双边模糊 2.opencv的API 3.磨皮美颜效果的实现 1.实现过程 2.主要代码 3.效果 参考 ...

  8. OpenCV学习记录 三 (傅里叶逆变换原理及实现)

    为什么要在频率域研究图像增强? 利用频率成分和图像外表之间的对应关系.滤波在频率域更为直观,它可以解释空间域滤波的某些性质.可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器 ...

  9. opencv学习记录——(5)图像像素的操作

    1.先补充几点opencv的相关知识点 1.1  通过Scalar来设置颜色 Scalar(b1, b2, b3, b4),前面的三个参数是依次设置BGR的,和RGB相反,第四个参数设置图片的透明度. ...

最新文章

  1. hdu 1003 Max Sum 解题报告
  2. php伪造页面url地址,php 伪造HTTP_REFERER页面URL来源的三种方法
  3. POJ2154(Pólya定理与欧拉函数优化)
  4. 设计一代码,逆置带头结点的动态单链表L
  5. 3行代码实现ftp 上传、下载、删除操作集合
  6. c# maiform父窗体改变动态的gridew 奇偶行变色的快捷方法
  7. 图像处理基本概念——卷积,滤波,平滑
  8. JAVA编程思想——读书笔记 多态
  9. 【深度优先搜索】计蒜客:置换的玩笑
  10. 图论/暴力 Codeforces Beta Round #94 (Div. 2 Only) B. Students and Shoelaces
  11. ztree 后台异步加载_ztree 异步加载示例
  12. 教你制作纯净的,原生的WinPE环境【无桌面无任何添加剂】
  13. 电信跨域跨系统业务实践
  14. 黑帽SEO研究之js快照劫持代码分析
  15. RTK如何进行面积测量,跟攻略学就对了
  16. 昆石VOS3000/VOS2009 V2.1.7.01/V2.1.7.03 操作指南
  17. 典型的计算机网络安全技术有哪些,网络安全(计算机网络安全技术有哪些)
  18. 游戏读取服务器配置文件失败,游戏服务器怎么配置文件
  19. 【Python核心】字典和集合
  20. java mht 转html_【JAVA】mht文件转html

热门文章

  1. Python中怎么清屏
  2. mongoDB's Capped Collections
  3. python中的types是什么模块_python的types模块
  4. 走马观花之《视觉SLAM十四讲》
  5. SSM框架---Spring注解@Component、@Repository、@Service、@Controller区别
  6. java-ocr技术
  7. CVBS全电视信号的一些基本知识
  8. popen使用方法及场景
  9. JS 的 apply 方法
  10. inspect python_inspect