学习OpenCV:滤镜系列(1)—— 雕刻&浮雕
来源:互联网 发布:巧克力键盘 推荐 知乎 编辑:程序博客网 时间:2024/04/28 19:17
==============================================
版权所有:小熊不去实验室CSDN博客
==============================================
浮雕的算法是对图像的每一个点进行卷积处理,采用的矩阵如下
[1 0 0;
0 0 0;
0 0 -1 ];
假设原图像为X,处理后的图像为Y ,也就是说,对于坐标为(i,j)点,其浮雕效果图的算法为Y(i,j)=X(i+1,j+1)-X(i-1,j-1)+128。当然,X,Y的取值均在0~255之间。
同时也可以
[1 0
0 -1]
假设原图像为X,处理后的图像为Y ,也就是说,对于坐标为(i,j)点,其浮雕效果图的算法为Y(i,j)=X(i,j)-X(i-1,j-1)+128。当然,X,Y的取值均在0~255之间。
#include <opencv/cv.h> #include <opencv/highgui.h>using namespace cv;int main(){Mat src = imread("D:/test5.jpg");Mat img0(src.size(),CV_8UC3);Mat img1(src.size(),CV_8UC3);for (int y=1; y<src.rows-1; y++){uchar *p0 = src.ptr<uchar>(y);uchar *p1 = src.ptr<uchar>(y+1);uchar *q0 = img0.ptr<uchar>(y);uchar *q1 = img1.ptr<uchar>(y);for (int x=1; x<src.cols-1; x++){for (int i=0; i<3; i++){int tmp0 = p1[3*(x+1)+i]-p0[3*(x-1)+i]+128;//浮雕if (tmp0<0)q0[3*x+i]=0;else if(tmp0>255)q0[3*x+i]=255;elseq0[3*x+i]=tmp0;int tmp1 = p0[3*(x-1)+i]-p1[3*(x+1)+i]+128;//雕刻if (tmp1<0)q1[3*x+i]=0;else if(tmp1>255)q1[3*x+i]=255;elseq1[3*x+i]=tmp1;}}}imshow("src",src);imshow("浮雕",img0);imshow("雕刻",img1);waitKey();}
原图:
浮雕:
雕刻:
- 学习OpenCV:滤镜系列(1)—— 雕刻&浮雕
- 学习OpenCV:滤镜系列(1)—— 雕刻&浮雕
- OpenCV——PS 滤镜, 浮雕效果
- 浮雕,雕刻,木刻,灯光,油画滤镜的原理及实现 opencv+vs
- 学习OpenCV:滤镜系列(2)——扩张&挤压
- 学习OpenCV:滤镜系列(3)——颜色变幻
- 学习OpenCV:滤镜系列(4)——波浪:正弦
- 学习OpenCV:滤镜系列(6)——风
- 学习OpenCV:滤镜系列(7)——漩涡
- 学习OpenCV:滤镜系列(8)——素描
- 学习OpenCV:滤镜系列(14)——载入选区
- 学习OpenCV:滤镜系列(2)——扩张&挤压
- 学习OpenCV:滤镜系列(3)——颜色变幻
- 学习OpenCV:滤镜系列(4)——波浪:正弦
- 学习OpenCV:滤镜系列(6)——风
- 学习OpenCV:滤镜系列(7)——漩涡
- 学习OpenCV:滤镜系列(8)——素描
- 学习OpenCV:滤镜系列(14)——载入选区
- 获取当前java虚拟系统属性信息
- TCP半开连接限制
- 编程挑战(一)
- Win7系统使用ftp的dir或ls命令无法查看文件列表
- JAVA基础——枚举
- 学习OpenCV:滤镜系列(1)—— 雕刻&浮雕
- 第十一次实验任务
- Android重力感应实现方式简介
- Android自动检测版本及自动升级
- 知识点小节2(字符串中包含单引号)
- vmware NAT HOST-ONLY BRIDGE 连接
- 学习傅里叶变换的心得
- 收集各家独特观点为茫茫人生开启一盏明灯
- ubuntu中安装apache ab命令进行简单压力测试