一个简单的图像形状变换
2016-05-16 17:30
351 查看
自己想的,比较简单粗糙。
变换后的图像:
#include <stdio.h> #include <iostream> #include "cv.h" #include "highgui.h" int main() { int i,j; uchar* srcptr; uchar* dstptr; IplImage* src = cvLoadImage("H:\\pictures\\tree.jpg"); int srcWidth = src->widthStep; int srcHeight = src->height; int halfH = srcHeight/2; int index; IplImage * dst = cvCreateImage(cvSize(srcWidth/3,srcHeight), src->depth, src->nChannels); uchar* data = (uchar*)dst->imageData; for ( i = 0; i < srcHeight; i++) { for (j = 0; j < srcWidth; j++) { data[i * srcWidth + j ] = 255; } } for (j = 0; j < src->widthStep; j++) { for (i = 0; i < srcHeight; i++) { if (i <= halfH) { index = j*srcHeight/(3*srcWidth); if (i >= index) { if ((i-index)*halfH/(halfH-index) >= srcHeight) { continue; } dstptr = (uchar*)(dst->imageData + i * dst->widthStep); srcptr = (uchar*)(src->imageData + (i-index)*halfH/(halfH-index) * src->widthStep); dstptr[j] = srcptr[j]; } else { dstptr[j] = 0; } } else { index = j*srcHeight/(3*srcWidth); if (i <= srcHeight - index) { if (halfH + halfH*(i - halfH)/(halfH - index) >= srcHeight) { continue; } dstptr = (uchar*)(dst->imageData + i * dst->widthStep); srcptr = (uchar*)(src->imageData + (halfH + halfH*(i - halfH)/(halfH - index)) * src->widthStep); dstptr[j] = srcptr[j]; } else { dstptr[j] = 0; } } } } cvSaveImage("H:\\pictures\\tree1.jpg",dst); cvNamedWindow("src", 0); cvNamedWindow("dst", 0); cvShowImage("src", src); cvShowImage("dst", dst); cvWaitKey(0); cvDestroyWindow("src"); cvDestroyWindow("dst"); cvReleaseImage(&src); cvReleaseImage(&dst); return 0; }原图像:
变换后的图像:
相关文章推荐
- php中GET方法加号变成空格
- JNI官方文档翻译5-局部和全局引用
- Hard-Margin SVM(支持向量机)
- CGAffineTransform属性
- sql判断字符为空
- Oracle 查看相关优化器参数
- 用ndiswrapper给linux安装无线网卡
- 【Android】MTK Android 源码开发环境搭建
- Saltstack[1]-系统构成
- java的RabbitMQ 实例
- PAT (Basic Level) Practise (中文)1050. 螺旋矩阵(25)
- common-dbcp2数据库连接池参数说明
- 如何打jar包和运行jar包
- UITableViewCell背景色.选中背景色,分割线,字体颜色设置
- STUN/TURN/ICE协议在P2P SIP中的应用(二)
- Sql Server数据库锁表
- Linux_free(buffer与cache区别)
- codevs#1287[题解] Key:矩阵乘法
- 开源分享 一(StickerCamera + 仿微信多图选择)
- 特殊的棋子(bfs)(北理16校赛)