‘壹’ c语言如何实现图像对比
C函数库:
以前版本的C(TC时代)有graphics库可以用,
现在这个库不是通用的了(VC++不包含graphics.h),但是可以加搜差上easyX(就链嫌是个常用非官方库,实现了graphics.h的功能并有不少改进).
给你个思路.
直观的方法:
1.用loadimage将两张图片加载
2.用putimage输出第一张
3.用putimage输出第二张, 但是第四个参数选择XOR_PUT(图像和原世唤皮有像素作异或运算)
相同颜色的点将被抹除而只留下不同部分(但是颜色不能保证正确).
此方法可以快速直观得到不同处(找茬外挂专用)
准确的方法:
1.load两张图片
2.用getpixel逐个对比两张图片
稍稍优化的方法:
1.先用直观方法获得大致不同的区域
2.用GetMouseMsg()获得鼠标相关信息
3.鼠标框选差异区域
4.对应两个图片用getpixel仅处理差异区域.
要是用winapi之类的,那方法就更多了.
‘贰’ C语言都有什么函数要记
函数很多,用不着全部记住,也是不可能的。你可以记几个常用的函数,如输入输出函数等,其它的等到使用的时候查一下学习学习,慢慢就掌握了,祝你进步。
‘叁’ 运动的小球 C语言
int n;
scanf("%d",&n);
for (int j=0; j<n; j++)
{
for(i=0; i<185; i++)
{
putimage(70+i, 170, buf, COPY_PUT); /*左边球向右运动*/
putimage(500-i, 170, buf, COPY_PUT); /*右边球向左运动*/
}
for(i=0;i<185; i++)
{
putimage(255-i, 170, buf, COPY_PUT);
putimage(315+i, 170, buf, COPY_PUT);
}
}
‘肆’ putimage函数有时候有7个参数为什么有时候有3个参数
putimageC语言图形函数,包含在头文件graphics.h
函数名: putimage
功 能: 在屏幕上输出一个位图
用咐简闹 法:void far putimage(int x, int y, void far *bitmap, int op);注释:x,y表示屏幕上以(x,y)左上角的区域,int op可以是:复制、OR、AND、XOR、NOT等,分别进行或、与、异或、非等运算。
putimage函数支持两咐斗种语法,所以衡罩putimage函数有时候有7个参数有时候有3个参数。
‘伍’ C语言 GRAPHICS库
#include <iostream>
#include <cstdlib>
#include <graphics.h>
#include <conio.h>
using namespace std;
IMAGE *MG=NULL;
void draw()
{
int n,i;
initgraph(1366, 768);
setbkcolor(WHITE);
cleardevice();
IMAGE MG;
loadimage(&MG,_T( "A.JPG"));
for(i=100;i<800;i+=27)
for(n=100;n<800;n+=27)
putimage(i, n, &MG);
}
void mouse()
{
MOUSEMSG W;
IMAGE MG;
loadimage(&MG,_T( "b.JPG"));
int i=100;
while(!kbhit()){ //当敲击回车退出 这里加了个循环
W=GetMouseMsg();
if(W.uMsg==WM_LBUTTONDOWN)
{
putimage(i,i , &MG);
i+=27;
}
}
}
int main()
{
draw();
mouse();
}
我这里测试通过
‘陆’ 用c语言如何读取和保存jpg图片文件
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int file_size(char* filename)//获取文件名为filename的文件大小。
{
FILE *fp = fopen(filename, "rb");//打开文件。
int size;
if(fp == NULL) // 打开文件失败
return -1;
fseek(fp, 0, SEEK_END);//定位文件指针到文件尾。
size=ftell(fp);//获取文件指针偏移量,即文件大小。
fclose(fp);//关闭文件。
return size;
}
int main ()
{
int size=0;
size=file_size("qw");
printf("%d ",size);
FILE * pFile,*qw;
char *buffer=(char*)malloc(sizeof(char)*size);
qw =fopen("qw","r");
pFile = fopen ( "qwe" , "wb" );
printf("%d== ",pFile);
printf("%d ",size);
fread(buffer,1,size,qw);
fwrite (buffer , sizeof(byte), size , pFile );
fclose (pFile);
rename("qwe","Groot.jpg");
return 0;
}
(6)putimagec语言扩展阅读:
c语言读取TXT文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main()
{
char buf[MAX_LINE]; /*缓冲区*/
FILE *fp; /*文件指针*/
int len; /*行字符个数*/
if((fp = fopen("test.txt","r")) == NULL)
{
perror("fail to read");
exit (1) ;
}
while(fgets(buf,MAX_LINE,fp) != NULL)
{
len = strlen(buf);
buf[len-1] = '