C语言图像旋转 放大 移动程序代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)+2]=B;
}
}
cvShowImage( "现图", pImg_xz );//显示图像
cvShowImage( "原图", pImg );//显示图像
Sleep(100);
}
/////////////////////////图像处理部分///////////////////////////////////
pImg = cvLoadImage(filename, 1);//载入图像
pImg_xz = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U,3); //创建图像
cvNamedWindow( "原图", 1 );//创建窗口
cvMoveWindow("原图",100,200);//移动窗口
/////////////////////////图像处理部分///////////////////////////////////
width = pImg->width;
height = pImg->height;
step = pImg->widthStep/sizeof(uchar);
data = (uchar*)pImg->imageData;
double p,q;
double a,b;
double x,y;
int i,j,m,n,R,G,B;
int count;
uchar* data;
uchar* data_xz;
IplImagቤተ መጻሕፍቲ ባይዱ* pImg;//声明IplImage指针
IplImage* pImg_xz; //声明IplImage指针
for(drgee=360;drgee>0;drgee--)
{
a=HIGH*drgee/180;
for(i=-height_xz;i<height_xz;i++)
{
for(j=-width_xz;j<width_xz;j++)
{
x=(float)(j*cos(a)-i*sin(a));
y=(float)(j*sin(a)+i*cos(a));
}
C语言实现图像放大程序代码
////cxcore.lib cv.lib cvaux.lib highgui.lib cvcam.lib
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <math.h>
#define HIGH 3.14159
cvMoveWindow("现图",900,200);//移动窗口
a=0.1;
b=0.1;
count=20;
while(1)
{
for(i=-height_xz;i<height_xz;i++)
{
for(j=-width_xz;j<width_xz;j++)
{
x=j/a;
y=i/b;
if(y>0)
{
m=(int)y;//求最小整数
channels = pImg->nChannels;
width_xz = pImg_xz->width;
height_xz = pImg_xz->height;
step_xz = pImg_xz->widthStep/sizeof(uchar);
data_xz = (uchar*)pImg_xz->imageData;
data_xz = (uchar*)pImg_xz->imageData;
channels_xz = pImg_xz->nChannels;
width_xz=int(width_xz/2);//取中心位置
height_xz=int(height_xz/2);//取中心位置
cvNamedWindow( "现图", 1 );//创建窗口
}
else
{
m=(int)(y-1);//求最小整数
}
if(x>0)
{
n=(int)x;//求最小整数
}
else
{
n=(int)(x-1);//求最小整数
}
p=x-n;
q=y-m;
if(q==1)
{
q=0;
m=m+1;
}
if(p==1)
{
p=0;
n=n+1;
}
if((m>=-height_xz)&&(m<height_xz)&&(n>=-width_xz)&&(n<width_xz))
if(y>0)
{
m=(int)y;//求最小整数
}
else
{
m=(int)(y-1);//求最小整数
}
if(x>0)
{
n=(int)x;//求最小整数
}
else
{
n=(int)(x-1);//求最小整数
}
p=x-n;
q=y-m;
if(q==1)
{
q=0;
m=m+1;
}
if(p==1)
{
p=0;
n=n+1;
}
if((m>=-height_xz)&&(m<height_xz)&&(n>=-width_xz)&&(n<width_xz))
{
R=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)])
filename="D:\\d.jpg";//图像的地址
pImg = cvLoadImage(filename, 1);//载入图像
pImg_xz = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U,3); //创建图像
cvNamedWindow( "原图", 1 );//创建窗口
float drgee,p,q;
double a;
float x,y;
int i,j,m,n,R,G,B;
uchar* data;
uchar* data_xz;
IplImage* pImg;//声明IplImage指针
IplImage* pImg_xz; //声明IplImage指针
filename="D:\\d.jpg";//图像的地址
#include <windows.h>
int main( int argc, char** argv )
{
char* filename = NULL;
int width,height,step,channels;
int width_xz,height_xz,step_xz,channels_xz;
cvMoveWindow("原图",100,200);//移动窗口
/////////////////////////图像处理部分///////////////////////////////////
width = pImg->width;
height = pImg->height;
step = pImg->widthStep/sizeof(uchar);
{
R=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)]));
channels_xz = pImg_xz->nChannels;
width_xz=int(width_xz/2);//取中心位置
height_xz=int(height_xz/2);//取中心位置
cvNamedWindow( "现图", 1 );//创建窗口
cvMoveWindow("现图",900,200);//移动窗口
G=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+1])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+1]));
{
R=0;
G=0;
B=0;
}
if(R>255||G>255||B>255)
{
R=255;
G=255;
B=255;
}
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)]=R;
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)+1]=G;
C语言实现图像旋转程序代码
////cxcore.lib cv.lib cvaux.lib highgui.lib cvcam.lib
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <math.h>
#define HIGH 3.14159
cvWaitKey(0);//等待按键
cvDestroyWindow( "原图" );//销毁窗口
cvReleaseImage( &pImg );//释放图像
cvDestroyWindow( "现图" );//销毁窗口
cvReleaseImage( &pImg_xz );//释放图像
return 0;
#include <windows.h>
int main( int argc, char** argv )
{
char* filename = NULL;
int width,height,step,channels;
int width_xz,height_xz,step_xz,channels_xz;
data = (uchar*)pImg->imageData;
channels = pImg->nChannels;
width_xz = pImg_xz->width;
height_xz = pImg_xz->height;
step_xz = pImg_xz->widthStep/sizeof(uchar);
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+2]));
}
else
{
R=0;
G=0;
B=0;
}
if(R<0||G<0||B<0)
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+1]));
B=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+2])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)]));
G=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+1])
B=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+2])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+2]));
相关文档
最新文档