资源简介
参考Seam Carving for Content-Aware Image Resizing论文实现代码。
对应blog:http://blog.csdn.net/u011630458/article/details/54171081
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
Mat getTi(Mat &src){
int i j;
Mat out = Mat::zeros(src.size() CV_32FC1);
for(i=0;i float *ptr1 = out.ptr(i);
for(j=0;j ptr1[j] = abs(src.at(ij)-src.at(i+1j))+abs(src.at(i j)-src.at(i j+1));
}
ptr1[src.cols-1] = ptr1[src.cols-2];
}
float *ptr1 = out.ptr(src.rows-1);
float *ptr2 = out.ptr(src.rows-2);
for(j=0;j ptr1[j] = ptr2[j];
}
return out;
}
Mat getEnergy(Mat &srcXY Mat &tmpCircol){
int i j;
Mat out;
short k[3];
int index;
srcXY.copyTo(out);
for(i=1;i
/*********第一列*****************/
k[1] =out.at(i-10);
k[2] =out.at(i-11);
if(k[1]>k[2]){
if(i>0){
out.at(i0) = srcXY.at(i0)+out.at(i-10);
}else{
out.at(i0) = srcXY.at(i0);
}
tmpCircol.at(i0) = 2;
}else{
if(i>0){
out.at(i0) = srcXY.at(i0)+out.at(i-11);
}else{
out.at(i0) = srcXY.at(i0);
}
tmpCircol.at(i0) = 1;
}
/***********中间列***************/
for(j=1;j k[0] =out.at(i-1j-1);
k[1] =out.at(i-1j);
k[2] =out.at(i-1j+1);
index = 0;
if(k[1] index = 1;
}
if(k[2] index = 2;
}
out.at(ij) = srcXY.at(ij)+out.at(i-1j+index-1);
tmpCircol.at(ij) = index;
}
/*********最后一列*************/
k[0] =out.at(i-1srcXY.cols-2);
k[1] =out.at(i-1srcXY.cols-1);
if(k[0]>k[1]){
out.at(isrcXY.cols-1) = srcXY.at(isrcXY.cols-1)+out.at(i-1srcXY.cols-1);
tmpCircol.at(i srcXY.cols-1) = 1;
}else{
out.at(isrcXY.cols-1) = srcXY.at(isrcXY.cols-1)+out.at(i-1srcXY.cols-2);
tmpCircol.at(i srcXY.cols-1) = 0;
}
}
return out;
}
void getCircolAddr(Mat &srcEnergy Mat &tmpCircol int *cirColAddr){
int i j index=0;
float tmpEnergyValue;
float *ptr1 = srcEnergy.ptr(srcEnergy.rows-1);
tmpEnergyValue = ptr1[0];
for(i=1;i if(ptr1[i] index = i;
tmpEnergyValue = ptr1[i];
}
}
for(i=srcEnergy.rows-1;i>=0;i--){
cirColAddr[i] = index;
index = index+tmpCircol.at(iindex)-1;
}
}
Mat getResultPic(Mat &src float scale){
int i j k;
int circRow = src.rows - src.rows/scale;
int circCol = src.cols - src.cols/scale;
int cirColAddr[src.rows];
sh
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 252699 2017-01-06 13:44 1_test\myBin
.....H. 20480 2017-01-06 13:44 1_test\.1.cpp.swp
文件 299 2017-01-04 15:54 1_test\Makefile
....... 18594 2017-01-06 13:43 1_test\out.jpg
文件 44088 2017-01-06 13:42 1_test\pic.jpg
文件 5115 2017-01-06 13:44 1_test\1.cpp
目录 0 2017-01-06 13:44 1_test
----------- --------- ---------- ----- ----
341275 7
评论
共有 条评论