图形旋转的C语言源程序

图形旋转的C语言源程序
图形旋转的C语言源程序

图形旋转的C语言源程序

/*****************************************************************/ /* CONVOLVE.C - Turbo C 2.0 implementation of image convolution */

/* ---------- by Wesley G. Faler. All code is "as is". There */

/* is NO copyright. Use this code as you will, and if you make */

/* money at it, good for you. */

/*****************************************************************/

#include

#include

#include

#include

#include

int load_cut(char *fname);

int load_convolution_matrix(char *fname);

int convolve_image(void);

int swap_pictures(void);

int minx,maxx,miny,maxy;

int LOADPAGE=0;

int ENHANCEPAGE=1;

int *cmat, *pmat, *vmat;

int cmx,cmy,cmnum;

struct palettetype palette,newpal;

int driver,mode;

int cleancut=-1;

int init_graphics(void)

{

driver=DETECT; mode=0;

detectgraph(&driver,&mode);

if(driver==VGA) mode=VGAMED;

initgraph(&driver,&mode,"");

getpalette(&palette);

getpalette(&newpal);

}

int cleanup_image(void)

{

int i,j,num,x,y,k;

if(cleancut<0) return;

setactivepage(LOADPAGE);

setvisualpage(ENHANCEPAGE);

for(x=minx;x

for(y=miny;y

if(getpixel(x,y)!=0) num=-1;

else num=0;

for(j=-1;j<2;j++) {

for(i=-1;i<2;i++) {

if(getpixel(x+i,y+j)!=0) num++;

}

}

if(num>cleancut) {

k=getpixel(x,y);

setactivepage(ENHANCEPAGE);

putpixel(x,y,k);

setactivepage(LOADPAGE);

}

}

}

k=ENHANCEPAGE; ENHANCEPAGE=LOADPAGE; LOADPAGE=k;

}

void show_test_image(void)

{

int i;

minx=cmx; miny=cmy;

maxx=100+minx; maxy=100+miny;

setcolor(1);

moveto(minx,miny);

randomize();

for(i=0;i<20;i++)

lineto(random(100)+minx,random(100)+miny);

for(i=0;i<10;i++)

fillellipse(random(50)+25+minx,random(50)+25+miny,random(25),random(25)); }

main()

{

char fname[50];

int flag=0;

load_convolution_matrix("matrix.dat");

printf(".CUT file (1) or test image (0)?");

scanf("%d",&flag);

flag= flag? 1:0;

if(flag) {

fflush(stdin);

printf("filename to process:");

gets(fname);

}

printf("Delete pixels with x or fewer neighbors. x="); scanf("%d",&cleancut);

if(cleancut>8) cleancut=8;

init_graphics();

setactivepage(1); cleardevice();

setactivepage(0); cleardevice();

setactivepage(LOADPAGE); setvisualpage(LOADPAGE); if(flag) load_cut(fname);

else show_test_image();

cleanup_image();

setvisualpage(ENHANCEPAGE);

convolve_image();

swap_pictures();

restorecrtmode();

}

int toggle_colors(char c)

{

c=tolower(c);

c=c-'a';

if(c<0 || c>=palette.size) return 0;

newpal.colors[c]= palette.colors[c]-newpal.colors[c]; setpalette(c,newpal.colors[c]);

return 1;

}

int swap_pictures(void)

{

int mode=0;

char a;

setvisualpage(LOADPAGE);

for(;;) {

a=getch();

if(a==27) return;

if(toggle_colors(a)) continue;

if(mode==0) setvisualpage(ENHANCEPAGE);

if(mode==1) setvisualpage(LOADPAGE);

mode=1-mode;

}

}

int convolve_image(void)

{

int i,j,k,nval;

int *vx, *vy, *c;

int colmax,offset,end,midy;

char **lines=NULL;

char *temp=NULL;

offset=-minx+(cmx/2);

end=cmy-1; midy=cmy/2;

lines=(char **)malloc(cmy*sizeof(char *));

for(i=0;i

for(j=-cmy/2;j

for(i=minx-cmx/2;i<(maxx+cmx/2+1);i++) {

lines[j+midy][i+offset]=getpixel(i,j+miny);

}

}

colmax=getmaxcolor();

for(j=miny;j

setactivepage(LOADPAGE);

for(i=j+cmy/2,k=minx-cmx/2,nval=maxx+cmx/2;k

lines[end][k+offset]=getpixel(k,i);

for(i=minx;i

/* Load & multiply neighbors into matrix */

setactivepage(LOADPAGE);

vx=vmat; vy=vmat+1; c=cmat; nval=0;

for(k=0;k

if(*c) nval+= lines[(*vy)+midy][i+(*vx)+offset]*(*c);

/* if(*c) nval+= getpixel(i+(*vx),j+(*vy)) * (*c); */

c++;

vx+=2; vy+=2;

/* Cut off values too high or too low */

if(nval<0) nval=0;

if(nval>colmax) nval=colmax;

/* Place new pixel value */ setactivepage(ENHANCEPAGE);

putpixel(i,j,nval);

}

if(kbhit()) { getch(); break; }

/* rotate line pointers */

temp=lines[0];

for(i=1;i

lines[end]=temp;

}

for(i=0;i

if(lines[i]!=NULL) free(lines[i]);

}

if(lines!=NULL) {

free(lines);

}

return;

}

int build_offset_vectors(void)

{

int *t;

int il,im,jl,jm,i,j;

il=-cmx/2; im=cmx+il;

jl=-cmy/2; jm=cmy+jl;

t=vmat;

for(j=jl;j

for(i=il;i

*t++=i; *t++=j;

}

}

}

int load_convolution_matrix(char *fname) {

/* Layout of matrix file:

#x #y

x0y0 x1y0 ... xny1

.... .... ... ....

x0ym x1ym ... xnym

*/

FILE *mf;

int *t;

int i,j,im,jm;

if( (mf=fopen(fname,"rt"))==NULL ) {

printf("Cannot load matrix file.\n");

abort();

}

fscanf(mf,"%d%d",&im,&jm);

if( (im&1)==0 || (jm&1)==0 ) {

printf("Convolution matrix MUST have a center point.\n"); abort();

}

if( (cmat=(int *)calloc(im*jm,sizeof(int)))==NULL ) {

printf("Unable to calloc convolution matrix.\n");

abort();

}

if( (vmat=(int *)calloc(2*im*jm,sizeof(int)))==NULL ) { printf("Unable to calloc offset vector matrix.\n");

abort();

}

cmx=im; cmy=jm; cmnum=im*jm;

t=cmat;

for(j=0;j

for(i=0;i

if( fscanf(mf,"%d",t++)!=1 ) {

printf("Unable to read matrix.\n");

abort();

}

}

}

fclose(mf);

build_offset_vectors();

}

int load_cut(char *fname)

{

static unsigned char st[3000];

char *sp=st,*spend;

int stp=0;

int width,height;

FILE *fp;

int x,y,xl,yl;

int i,n,len,d,j;

fp=fopen(fname,"rb");

width=getw(fp); height=getw(fp);

xl=cmx; yl=cmy;

minx=xl; miny=yl;

maxx=xl+width; maxy=yl+height;

if(maxy>(getmaxy()-cmy)) {

maxy=getmaxy()-cmy;

height=maxy-yl;

}

getw(fp);

y=yl-1;

for(sp=st,n=0;n

stp=getw(fp);

for(sp=st,spend=st+stp;sp

while(sp

if(*((unsigned char *)sp)>0x80) {

len=(*sp++) & 0x7f;

if(!(*sp)) { x+=len; continue; }

setcolor(*sp++);

moveto(x,y);

linerel(len,0);

x+=len;

continue;

} else {

len=*sp++;

for(j=0;j

}

}

}

fclose(fp);

}

C语言写的各种心形图案

C语言写的各种心形图 案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

C语言写的各种心形图案 1./* 高手在民间,只能说这个是人才写的 */ #include "stdio.h" void main() { printf(" 我我\n 爱爱爱爱\n 你你你你\n"); printf(" 我我我\n爱 爱\n 你你\n"); printf(" 我我\n 爱 爱\n 你你\n"); printf(" 我我\n 爱爱\n 你你\n"); printf(" 我我\n 爱爱\n 你\n"); } /* 输出结果: ---------------------- 我我

爱爱爱爱 你你你你 我我我爱爱你你我我 爱爱 你你 我我 爱爱 你你 我我 爱爱 你 ---------------------- */ 2./* 结合课本输出几何图形 */ #include int main() {

int i,j; printf(" ****** ******\n" " ********** **********\n" " ************* *************\n"); //前三排的规律性不强所以直接显示就好了 for(i=0;i<3;i++)//显示中间三排{ for(j=0;j<29;j++) printf("*"); printf("\n"); } for(i=0;i<7;i++)//显示呈递减趋势规律的中间7排 { for(j=0;j<2*(i+1)-1;j++) printf(" "); for(j=0;j<27-i*4;j++) printf("*"); printf("\n"); } for(i=0;i<14;i++)//最后一个星号*与上面的规律脱节了所以独立显示 printf(" "); printf("*\n"); return 0; } /*

数字图像处理_旋转与幅度谱(含MATLAB代码)

数字图像处理实验一 15生医 一、实验内容 产生右图所示图像 f1(m,n),其中图像大小为256 ×256,中间亮条为128×32,暗处=0,亮处=100。 对其进行FFT: ①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图; ②若令f2(m,n)=(-1)^(m+n)f1(m,n),重复 以上过程,比较二者幅度谱的异同,简述理由; ③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的 幅度谱,并与FFT(f2)的幅度谱进行比较; ④若将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系; ⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。 二、运行环境 MATLAB R2014a 三、运行结果及分析 1.同屏显示原图f1(m,n)和FFT(f1)的幅度谱图:

50100150200250 100150200250 50100150200250 100150200250 2.令f2(m,n)=(-1)^(m+n )f1(m,n),对其进行FFT ,比较f2与f1幅度谱的异同,简述理由: 50100150200250 100150200250 50100150200250 100150200250 异同及理由:①空域:f2由于前边乘了系数(-1)^(m+n ),导致灰度值有正有负,而在MATLAB 的imshow 函数中默认把负值变为0(有些情况是取反),所以形成了如左图所示的黑白花纹。②频域:FFT(2)

心形C语言代码

#include #include #define uint unsigned int #define uchar unsigned char uchar code table0[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//P0-P7依次点亮uchar code table1[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//P0-P7依次熄灭uchar code table2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//P7-P0依次点亮uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//P7-P0依次熄灭uchar temp,aa,bb,temp,temp1; void delay(uint z); void h(); void hh(); void hhh(); void hhhh(); void init(); void main()//主函数 { init(); while(520)//大循环 { h(); hh(); hhh(); hhhh(); } } void delay(uint z)//延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void h() { for(aa=0;aa<3;aa++) { for(bb=0;bb<8;bb++) { P0=table0[bb]; delay(50); } for(bb=0;bb<8;bb++) { P1=table0[bb];

用MATLAB编程实现数字图像旋转

用MATLAB编程实现数字图像旋转 摘要:文章论述了用Matlab编程实现数字图像旋转的基本方法,从计算机几何坐标中的图像旋转矩阵表示着手,给出了图像旋转变换的推导过程,用简单综合插值方法,基本解决了数字图像旋转后出现的空洞问题,并通过Matlab编程工具进行实验验证。 关键词:数字图像旋转;移动变换;旋转矩阵变换;简单综合插值。 数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。目前,数字图像处理的信息大多是二维信息。由于数据量大,因此对计算机的计算速度、存储容量等要求较高。随着微型计算机性能的提高,原来以大型机、小型机为主机的图像处理系统演变为以微机为主机的结构,其应用也迅速普及,当前图像处理技术在工业自动化、工业检测、遥感探测、军事、航空、生物医学等各个方面都发挥着十分重要的作用。 图像旋转是一种常用的数字图像处理技术,传统的图像旋转都是在二维空间中进行的,由于旋转后图像像素点坐标不再是整数,故旋转后必须对像素点灰度进行一维插值运算或二维插值运算,尤其是当对旋转后的图像质量要求较高时,需要采用高阶插值运算。 文章从通用的图像旋转矩阵着手,给出了图像旋转变及换简单综合插值的推导过程,并用Matlab编程工具进行实验验证图像旋转结果。 1Matlab简介 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、C#等语言来解算相同的事情简捷得多。 2图像旋转矩阵

真正实现C语言绘制数学函数图像

用C语言画函数图像 横纵坐标单位长度比校正(3:5) 真正的余弦函数 #include #include int sishewuru(float a); void main() { int n = 450; float a[500], b[500]; int i,j; a[0] = b[0] = 0; for (i = 1; i < n; i++)

a[i] = a[i - 1] + 0.01; b[i] = cos(a[i]); } int A[500],B[500]; for (i = 0; i < n; i++) { //printf("sin(%f)=%f\n", a[i], b[i]); a[i] = 100 * a[i]; b[i] = 55 * b[i]; A[i] = sishewuru(a[i]); B[i] = sishewuru(b[i])+60; //printf("sin(%d)=%d\n", A[i], B[i]); } for ( i = 100; i >=0; i--) { for ( j = 0; j < n; j++) { if (i==B[j]) { printf("*"); } else { printf(" "); } } printf("\n"); } } int sishewuru(float a) { int m; if (a-floor(a)<0.5) { m = a; return m; } else { m = a + 1; return m; } }

1.调节输出框大小,字符显示大小 2.确定函数的定义域 3.确定定义域上的步长 4.计算函数值 5.确定函数值放大系数 6.确定定义域恰好落在显示的区间内 7.确定坐标的单位长度与字符实际长度之间的换算关系 8.确定打点的顺序与坐标的关系 定义域在),(ππ-的正弦函数图像 定义域在),(ππ-的正切函数图像

C语言源程序

C语言程序设计 <一> 1、程序运行从main()函数开始,也从main()函数结束。 2、函数是C程序的基本单位,由函数头和函数体组成。 3、C语言源程序是由函数组成,它们的数目可以有多个。 4、在C语言源程序中,是必须有一个函数名为main的函数。main()后的小括号()没有任何内容,它不可以省略。 5、C程序中的语句用分号结束,在一个程序行上可以有多个语句,一个C 语句能写在多个程序行上。 6、函数体是由一对大括号围起来语句序列组成。小括号是函数的标志。 二、C语言的组成元素 1、命令、函数和变量等是组成程序的基本对象,每一个程序对象都需要一个名字来标识,程序对象的名称就是标识符。 2、在C语言中,标识符分为用户标识符和系统标识符。 3、用户标识符是指在程序中由程序员为变量、函数、数组等程序对象自行命名的标识符。 4、系统标识符是指C语言编译系统内部预定义的用于表示命令数据内型的标识符,又称保留字符。 5、基本字符集 英文字母:a~z和A~Z。 阿拉伯数字:0~9。其他字符:()、[ ]、+、-、*、/、%、<、>、<=、>=、==、!=、!、&&、‖、++、--、+=、-=、*=、/=、%=。它们是由1~2个字符组成。用作C语言的运算符;还包括:空格、换行符,回车符,单双引号,大括号,逗号,分号,反斜线,它们在程序中起到分隔和定界作用。 6、标识符:是用于标识命令;变量、函数,数组,数据类型等程序对象名称的字符序列。 7、组成标识符的合法字符有:字母,数字,下划线,三种,数字不能作首字符。 三、执行C语言程序 1、单击“开始”——“程序”——“附件”——“命令提示符”。 2、按功能键<10>激活菜单,执行“File”——“NEW”(ALT+回车)全屏。 3、为保存,输入程序文件名。 4、+运行 有输入:等待输入→回车 通过 无输入:返回到编辑 未通过:回车→F6→修改 F3(打开)

最美C语言情书(输出心形图案)

/***C语言心形图案***/ # include < stdio.h > # include < math.h > int main ( void ) { double y; unsigned m, i, j; for (y = 1; y >=0; y -= 0.1) { m = asin (y) * 10; for (i = 0; i < m; i++) { putchar (' '); } putchar ('*'); for (; i < 31 - m; i++) { if(15 == i || 16 == i) putchar('|'); else if (i > 15 && i < 27 && 0 == m) putchar('|'); else

putchar (' '); } putchar ('*'); for (; i < 62; i++) { if (31 + m == i || 62 - m == i) putchar('*'); else if (46 - sqrt(25-(5-m)*(5-m)) == i || 46 + sqrt(25-(5-m)*(5-m)) == i || 45 - sqrt(25-(5-m)*(5-m)) == i || 45 + sqrt(25-(5-m)*(5-m)) == i) putchar('o'); else putchar(' '); } putchar ('\n'); } for ( y = 0, j = 0; y >= -2; y -= 0.1 ) { int yy = fabs(y) * 10; m = (acos(y*0.5) * 20) - 31; if (!(yy % 6)) j++; for (i = 0; i < 63; i++) { if (m + j == i || 63 - m - j == i) putchar('*'); else if (y >= -0.6 && ( 38 - yy == i || yy + 26 == i)) putchar('v'); else if (y >= -1.6 && y < -0.7 && (31 - sqrt(25-(12-yy)*(12-yy)) == i || 32 + sqrt(25-(12-yy)*(12-yy)) == i)) putchar('e'); else if (-1.2 == y && i > 28 && i < 35) putchar('e'); else if ((yy == 17 && i == 31) || ((i == 26) && yy == 14) || ((i == 28 || i == 34) && yy == 16)) putchar('e'); else putchar(' '); } printf("\n"); } return 0; }

c语言字符串左旋转

假设原数组序列为abcd1234,要求变换成的数组序列为1234abcd,即循环右移了4 位。 比较之后,不难看出,其中有两段的顺序是不变的:1234 和abcd,可把这两段看成两个整 体。右移K 位的过程就是把数组的两部分交换一下。 变换的过程通过以下步骤完成: 逆序排列abcd:abcd1234 →dcba1234; 逆序排列1234:dcba1234 →dcba4321; 全部逆序:dcba4321 →1234abcd。 伪代码可以参考清单2-35。 //代码清单2-35 Reverse(int* arr, int b, int e) { for(; b < e; b++, e--) { int temp = arr[e]; arr[e] = arr[b]; arr[b] = temp; } } RightShift(int* arr, int N, int k) {

K %= N; Reverse(arr, 0, N – K - 1); Reverse(arr, N - K, N - 1); 8 Reverse(arr, 0, N - 1); } 这样,我们就可以在线性时间内实现右移操作了。 就拿abcdef 这个例子来说(非常简短的三句,请细看,一看就懂): 1、首先分为俩部分,X:abc,Y:def; 2、X->X^T,abc->cba,Y->Y^T,def->fed。 3、(X^TY^T)^T=YX,cbafed->defabc,即整个翻转。 #include 5. #include 6. 7. void rotate(char *start, char *end) 8. { 9. while(start != NULL && end !=NULL && start

基于51单片机心形流水灯C语言源程序

基于51单片机心形流水灯C语言源程序

#include unsigned int x,y; void delayms(unsigned int z) //延时 { unsigned int i,j; for(i=z;i>0;i--) for(j=150;j>0;j--); } void On_all() //开启所有灯 { P0=0x00; P1=0x00; P2=0x00; P3=0x00; } void Off_all()//关闭所有灯 { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } void ls()//正向流水灯 { P0=0x00; delayms(400); P2=0x00; delayms(400); P3=0x00; delayms(400); P1=0x00; delayms(400); P0=0x01; delayms(50);

P0=0x04; delayms(50); P0=0x08; delayms(50); P0=0x10; delayms(50); P0=0x20; delayms(50); P0=0x40; delayms(50); P0=0x80; delayms(50); P0=0x00; P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00; P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50); P3=0x04; delayms(50);

数字图像处理9-图像的平移与旋转

这次作业的内容是要完成让图片绕任意一点旋转的效果,同时要了解图像旋转的原理。为了达到这一目的,我在老师的示例代码上进行了改进,并自己计算出新的变换矩阵,达到了作业中要求的效果。这里我们先来看一下旋转的效果。 旋转中心(0,0),旋转60°旋转中心(0,0),旋转120° 旋转中心(100,0),旋转120°旋转中心(0,600),旋转120° 图像的大小是690*728,旋转的角度为顺时针,因此可以看到四副图中的结果都是符合预期的。之后我们来通过代码,详细的分析这一变化实现的过程。代码如下: close all; f = imread('try.jpg'); theta = 2* pi / 3; x0=0; y0=600; T = [cos(theta) sin(theta) 0 -sin(theta) cos(theta) 0 0 0 1]; t1=[ 1 0 0

0 1 0 -x0 -y0 1]; t2=[1 0 0 0 1 0 x0 y0 1]; T=t1*T*t2; tform = maketform('affine',T); [g, xdata, ydata] = imtransform(f,tform, 'FillValue',255); imshow(g,'XData',xdata,'YData',ydata); hold on; imshow(f); axis auto; axis on; 读入图像后,先设定了三个参数,x0y0就是旋转中心的坐标,而theta就是旋转角(顺时针)。这里要详细说明一下这几个矩阵的作用,并且推导出其生成的过程。首先最主要的矩阵T,是负责旋转的矩阵。以下这个图片摘自网络,可以说较为完整的解释了这个矩阵的来历。

简单易懂的C语言源代码(供初学者使用)

#include main() {float pi=3.14159265,r; printf("enter radius:\n"); scanf("%f",&r); printf("r=%.2f,c=%.2f,area=%.2f\n",r,2*pi*r,pi*r*r); system("pause"); } #include main() {int m,n,x,y; printf("inputm,n:\n"); scanf("%d%d",&m,&n); if (n%2==1) {printf("error!! n bu shi ji shu!\n",n); return;} /*n在这里不能是奇数*/ x=(4*m-n)/2; y=(n-2*m)/2; if((x>=0)&&(y>=0)) printf("x=%d,y=%d\n",x,y); else printf("shu ru cuo wu!\n");

getch(); } #include #include #include main() {float a,b,C; printf("enter 3number(a,b,C):\n"); scanf("%.2f %.2f %.2f",&a,&b,&C); s=0.5*a*b*sinC; printf("s=%.2f\n",s); system("pause"); } #include main() {int ds,nl,yf; char c; printf("shu ru ds;\n"); scanf("%d",&ds); if (ds<14||ds>1184)

c语言心形代码及图形

#include #include #include #define r 10 #define R 172 int main(void) { FILE *fp; int n; if((fp=fopen("LOVE.txt","w"))==NULL) { printf("File open error!\n"); exit(0); } int i,j,e; int a; for(i=1,a=r;i0;j--) { printf(" "); fprintf(fp,"%s"," "); } for(e=1;e<=2*sqrt((r*r-(a-i)*(a-i)));e++)

{ printf("\3"); fprintf(fp,"%s"," * "); } for(j=(int) ( 2*( r-sqrt((r*r-(a-i)*(a-i)))) );j>0;j--) { printf(" "); fprintf(fp,"%s"," "); } for(e=1;e<=2*sqrt( (r*r-(a-i)*(a-i)) );e++) { printf("\3"); fprintf(fp,"%s"," * "); } printf("\n"); fprintf(fp,"%s","\n"); } for(i=1;i<40;i++) { if(i==6) { printf("(∩_∩)I LOVE MY MOTHER(∩_∩)"); i+=30; } printf("\3"); fprintf(fp,"%s"," * "); } printf("\n"); for(i=1;i<=R/2;i++) { if(i%2||i%3)continue; for(j=(int) ( R-sqrt( (double) (R*R-i*i) ) );j>0;j--) { printf(" "); fprintf(fp,"%s"," "); } for(e=1;e<=2*( sqrt( (double)(R*R-i*i) ) - (R-2*r) );e++) { printf("\3"); fprintf(fp,"%s"," * " ); } printf("\n");

C语言图形开发库函数graphics

函数名: fillellipse 功能: 画出并填充一椭圆 用法: void far fillellipse(int x, int y, int xradius, int yradius); 程序例: #include #include int main(void) { int gdriver = DETECT, gmode; int xcenter, ycenter, i; initgraph(&gdriver,&gmode,""); xcenter = getmaxx() / 2; ycenter = getmaxy() / 2; for (i=0; i<13; i++) { setfillstyle(i,WHITE); fillellipse(xcenter,ycenter,100,50); getch(); } closegraph(); return 0; } Graphics 类 .NET Framework 类库 Graphics 类 封装一个GDI+ 绘图图面。无法继承此类。 命名空间:System.Drawing 程序集:System.Drawing(在system.drawing.dll 中) 语法 Visual Basic(声明)

Public NotInheritable Class Graphics Inherits MarshalByRefObject Implements IDeviceContext, IDisposable Visual Basic(用法) Dim instance As Graphics C# public sealed class Graphics : MarshalByRefObject, IDeviceContext, IDisposable C++ public ref class Graphics sealed : public MarshalByRefObject, IDeviceContext, IDisposable J# public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable JScript public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable 备注 Graphics类提供将对象绘制到显示设备的方法。Graphics与特定的设备上下文关联。 通过调用从System.Windows.Forms.Control继承的对象的Control.CreateGraphics方法,或通过处理控件的Control.Paint事件并访问System.Windows.Forms.PaintEventArgs类的Graphics属性,可以获取Graphics。 继承层次结构 System.Object System.MarshalByRefObject System.Drawing.Graphics 线程安全 此类型的任何公共静态(Visual Basic 中的Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。 平台 Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

opencv 图像翻转旋转

opencv 图像翻转、旋转 转自: https://www.360docs.net/doc/513693690.html,/watkinsong/article/details/9189649 1.图像左右翻转、翻转90度 opencv中并没有直接封装图像旋转任意角度的函数,一般我们可以使用仿射变换获得旋转后的图像,这时候可以进行任意角度的旋转,但是如果我们需要将图像旋转90度,例如只是对图像进行左右翻转,或者旋转90度将图像放倒,那么如果还使用仿射变换,显得有些不是很简单,有点过于复杂。实际上可以使用求转置矩阵的方式将图像旋转90度,然后可以沿着指定的坐标轴对旋转后的图像进行翻转变化。使用transpose(src, dst);对目标图像进行转置变换,可以将垂直的图像变为水平放置。然后使用flip()函数对图像进行翻转。整个过程非常简单,可以看下下面的代码就非常清晰的了解了。// ImageFlip.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include "opencv/cv.h" #include "opencv/highgui.h" #include "stdio.h" #include "iostream"using namespace cv;

using namespace std;int _tmain(int argc, _TCHAR* argv[]) { Mat src = imread("lena.jpg"); Mat dst; transpose(src, dst); Mat dst2; flip(dst, dst2, 1); // flip by y axis Mat dst3; flip(dst, dst3, 0); // flip by x axis Mat dst4; flip(dst, dst4, -1); // flip by both axises imshow("src", src); imshow("dst", dst); imshow("dst2", dst2); imshow("dst3", dst3); imshow("dst4", dst4); cvWaitKey(); return 0; } 实验结果:原始图像: 转置以后: flip(dst, dst2, 1); // flip by y axis2、任意角度旋转、同时缩放(输出图像大小与输入图像大小相同,容易造成图像不全)下面这份代码用于实现对图像的缩放与旋转。

c语言程序代码

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 1.要求在屏幕上输出下一行信息。 This is a c program. 程序: #include int main() { printf(“this is a c program.\n”); return 0; } 2.求两个整数之和。 程序: #include int main() { int a,b,sum; a=122; b=234;

sum=a+b; printf(“sum is %d\n”,sum); return 0; } 3.求两个整数之间的较大者。 程序: #include int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); return 0; } int max(int x,int y) { int z; if(x>y)z=x; else z=y; return(z);

} 4.有人用温度计测量出华氏发表示的温度(如69°F),今要 求把她转换成以摄氏法表示的温度(如20℃)。 公式:c=5(f-32)/9. 其中f代表华氏温度,c代表摄氏温度。 程序: #include int main() { float f,c; f=64.0; c=(5.0/9)*(f-32); printf("f=%f\nc=%f\n",f,c); return 0; } 5.计算存款利息。有1000元,想存一年。有一下三种方法可 选:(1)活期:年利率为r1;(2)一年定期:年利率为r2; (3)存两次半年定期:年利率为r3。分别计算一年后按三种方法所得到的本息和。 程序: #include

编程实现一幅图像的平移、镜像、旋转、缩小和放大

课程设计任务书 学生姓名:专业班级:通信1003班 指导教师:郭志强工作单位:信息工程学院 题目: 通信工程应用技术 初始条件: (1)使用matlab软件进行操作 (2)选择一个图像进行处理 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)编程实现一幅图像的平移、镜像、旋转、缩小和放大。 (2)给出所用算法的理论依据和必要的推导过程,给出原始图像和处理后的图像。时间安排: 第15周:安排任务,布置题目; 第15—18周:设计仿真,撰写报告 第19周:完成设计,提交报告,答辩 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要.................................................................................................................................................................. I Abstract ........................................................................................................................................................... I I 1 MA TLAB简介 .. (1) 1.1 MA TLAB用途 (1) 2图像选择及变换 (4) 2.1 原始图像选择读取 (4) 2.2 图像放大和缩小 (6) 2.2.1 图像放大缩小的知识 (6) 2.2.2 函数说明及参数选择 (8) 2.2.3 源程序及运行结果 (8) 2.3 图像任意角度的旋转 (10) 2.3.1 函数说明及参数选择 (10) 2.3.2 源程序及运行结果 (10) 2.4 图像的平移 (12) 2.4.1 函数说明及参数选择 (12) 2.4.2 源程序及运行结果 (13) 2.5 图像经过镜像 (13) 3.5.1 函数说明及参数选择 (13) 2.5.2 源程序及运行结果 (14) 4 感悟体会小结 (17) 5 参考文献 (18) 附录 (19) 全部源程序代码: (19)

c语言基本代码

言基本代码22 November 2020

'\0':是字符串的结朿标志 '空格 auto:声明自动变量一般不使用 double:声明双精度变量或函数(和%lf连用), m=(double)(v~l)/1*100+; 这个式子加个double是将后而式子中非double类型强制转换类型为double float:声明浮点型变量或函数(和%彳连用),单精度 int:声明整型变量或函数(与%d连用) struct:声明结构体变量或函数 long:声明长整型变量或函数 switch:用于开关语句 enum:声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) extern:声明变量是在其他文件正声明(也可以看做是引用变量) return:子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const:声明只读变量 short:声明短整型变量或函数 unsigned:声明无符号类型变量或函数 signed:生命有符号类型变量或函数 void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:讣算数据类型长度,,是整型表达式用法sizeof(类型说明符,数组鋼或表达式);sizeof()是获取类型占用的字节数,是整形的 volatile :说明变量在程序执行中可被隐含地改变 static:声明静态变量 char:声明字符型变量或函数 strcmp:strcmp(sl, s2)比较字符串大小两个字符串自左向右逐个字符相比(按ASCII 值大小相比较),直到岀现不同的字符或遇'\0'为止大于返回1小于返回-1等于返回0 循环: for:一种循环语句(可意会不可言传)for (表达式1;表达式2:表达式3) while:循环语句的循环条件 do:循环语句的循环体 break:跳出当前循环 continue:结束当前循环,开始下一轮循环 判断: d=a>30b:c:相当于if暨当a>30是d=b否则d=c;

LED旋转显示屏C语言程序

#include #include #define uchar unsigned char #define uint unsigned int sbit e=P3^2; sbit k=P1^0; uint p; uchar code tab[]; void delay(uchar n); void main() { uchar a,b,s; while(1) { if(k==0) { delay(5); if(k==0) { while(!k); for(s=0;s<=192;s++) { a=tab[p]; a=_cror_(a,1); b=tab[p+1]; b=_cror_(b,1); SBUF=a; while(!TI);TI=0; SBUF=b; while(!TI);TI=0; e=0;e=1; delay(5);

} p=0; } } } } void delay(uchar n) { uchar i,j; for(i=0;i

(完整word版)C语言源代码

剪刀石头布源代码 #include #include main() { int d,x; { printf(" 请输入:1 是剪刀,2 是石头,3是布"); scanf("%d",&d); x=rand()%3; if(d==x) printf(" 双方平局"); else if((d==1&&x==2)||(d==2&&x==3)||(d==3&&x==1)) printf(" 你赢了"); else printf(" 电脑赢了"); } }

简单计算器 #include main() { int a,b,d=0; char c; while(d==0) { printf(" 请开始计算,请输入需要运算的数字和运算法则,数字 符号数字:"); scanf("%d%c%d",&a,&c,&b); switch(c) { case'+': printf("%d+%d=%d\n",a,b,a+b); break; case'-': printf("%d-%d=%d\n",a,b,a-b); break; case'*': printf("%d*%d=%d\n",a,b,a*b); break; case'/': if(0==b) printf(" 除法被除数不能为零!\n") ; else printf("%d/%d=%d\n",a,b,a/b); break; } } }

加油站加油问题 #include int main() { double a = 3.25, b = 3.00, c= 2.75; double d = 0.05, e = 0.10, m; int x,y,z; printf(" 请输入您要的加油量:"); scanf("%d",&x); printf(”请输入您要的汽油种类,1-a型汽油售价3.25元/千克,2-b型汽油售价3.00元/千克, 3-c型汽油售价2.75元/千克:”); scanf("%d",&y); printf(" 请输入您要的服务类型,1-自己加服务优惠0.05,2-协助加服务优惠0.10:");scanf("%d",&z); switch(y) { case 1: y = a;break; case 2: y = b;break; case 3: y = c;break; } if(z == 1) m = (1 - d) * y * x; else if(z == 2) m = (1 - e) * y * x; ",m); printf(" 您需要支付:%f 元,谢谢惠顾,欢迎下次再来 return 0; }

相关文档
最新文档