OpenCV编写毛玻璃效果实现(需进一步提高)
2010-06-04 20:17
337 查看
#include "cv.h" #include "highgui.h" #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> // color image processing Frosted-glass effect int main() { IplImage* src = cvLoadImage("../Test.jpg", 1); if(src) { int w = src->width, h = src->height, ws = src->widthStep; uchar* dsrc = (uchar*)src->imageData; IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); uchar* ddst = (uchar*)dst->imageData; cvZero(dst); // random window size, n must be odd number. int n = 7; int rw = n * n; int nf = floor(n / 2.0); IplImage* arr = cvCreateImage(cvSize(1, rw), src->depth, src->nChannels); uchar* darr = (uchar*)arr->imageData; IplImage* tmp = cvCreateImage(cvSize(1, 1), src->depth, src->nChannels); uchar* dtmp = (uchar*)tmp->imageData; int i, j, k, l, m; for(i = nf; i < h - nf; i += n) for(j = nf; j < w - nf; j += n) { for(k = -nf; k <= nf; k++) for(m = -nf; m <= nf; m++) { darr[3 * l] = dsrc[(i + k) * ws + 3 * (j + m)]; darr[3 * l + 1] = dsrc[(i + k) * ws + 3 * (j + m) + 1]; darr[3 * l + 2] = dsrc[(i + k) * ws + 3 * (j + m) + 2]; l++; } srand((int)time(NULL)); for(k = 0; k < rw; k++) { m = rand() % rw; dtmp[0] = darr[3 * m]; dtmp[1] = darr[3 * m + 1]; dtmp[2] = darr[3 * m + 2]; darr[3 * m] = darr[3 * k]; darr[3 * m + 1] = darr[3 * k + 1]; darr[3 * m + 2] = darr[3 * k + 2]; darr[3 * k] = dtmp[0]; darr[3 * k + 1] = dtmp[1]; darr[3 * k + 2] = dtmp[2]; } l = 0; for(k = -nf; k <= nf; k++) for(m = -nf; m <= nf; m++) { ddst[(i + k) * ws + 3 * (j + m)] = darr[3 * l]; ddst[(i + k) * ws + 3 * (j + m) + 1] = darr[3 * l + 1]; ddst[(i + k) * ws + 3 * (j + m) + 2] = darr[3 * l + 2]; l++; } } cvNamedWindow("src", 1); cvShowImage("src", src); cvNamedWindow("dst", 1); cvShowImage("dst", dst); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&src); cvReleaseImage(&dst); cvReleaseImage(&arr); cvReleaseImage(&tmp); return 0; } printf("Can't open image!/n"); return 1; }
相关文章推荐
- 整理Glide方法使用含义(毛玻璃效果,实现圆角等)
- OpenCV实现马赛克和毛玻璃滤镜效果
- 不用图片,纯Css3实现超酷的类似iphone的玻璃气泡效果
- iOS毛玻璃效果的实现及图片模糊效果的三种方法
- 一种快速毛玻璃虚化效果实现--Android
- Flex 实现可以拖动的毛玻璃效果
- 分享Css3设计---纯Css实现超酷的iphone玻璃气泡效果
- Android也能流畅实现毛玻璃效果(高斯模糊)效果
- 图像拼接实现镜面效果 opencv完整代码 实现(附实验结果)
- VC实现去掉vista窗口的玻璃效果
- C语言提高-第26/27讲: 实现线性表基本操作的函数/编写查找和排序函数
- 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。
- Shader 三种方法实现玻璃效果
- Android实现毛玻璃效果的对话框
- css实现照片模糊效果类似毛玻璃效果
- iOS8中用UIVisualEffectView实现高斯模糊视图(毛玻璃效果)
- 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览
- opencv开发笔记(十一):上取样效果和下取样效果的实现
- 纯css实现窗户玻璃雨滴逼真效果
- Android高斯模糊技术,实现毛玻璃效果