#include "StdAfx.h"
#include <Mil.h>
int main(int argc, char* argv[])//MIL转换为unsigned char*
{
MIL_ID MilApplication, MilSystem, MilDisplay, mImg;
MappAllocDefault(M_SETUP, &MilApplication, &MilSystem, &MilDisplay, M_NULL, M_NULL); // MIL函数的系统申请
MbufRestore("3Gray.bmp", M_DEFAULT, &mImg); //Restore方式加载图像函数, 单通道图像
printf("显示mImg!\n");
MdispSelect(MilDisplay, mImg);//显示图像mImg
getchar();//停顿,观察图像回车结束
int SizeX, SizeY, band;
MbufInquire(mImg, M_SIZE_X, &SizeX); //读取图像的长
MbufInquire(mImg, M_SIZE_Y, &SizeY); //读取图像的宽
MbufInquire(mImg, M_SIZE_BAND, &band);//读取图像的通道数
unsigned char* p = new unsigned char[band*SizeX*SizeY]; //unsigned char*的内存申请,注意其后的释放!
MbufGet(mImg, p); // 把 MIL的图像内存转换为unsigned char*的数据内存
// for (int k = 0; k < band*SizeX*SizeY/2; ++k)
// {
//
// p[k] = 0;
//
//
//
// }
int n=band*SizeX*SizeY;
for (int k = 0; k < n/2; ++k)
{
p[k] = 255;
}
for (int a=n/2; a<n; ++a)
{
p[a]= 0;
}
MIL_ID mImg1;
MbufAlloc2d(M_DEFAULT, SizeX, SizeY, (8+M_UNSIGNED), (M_DISP+M_PROC+M_IMAGE), &mImg1);
MbufPut(mImg1, p);
printf("显示mImg1!\n");
MdispSelect(MilDisplay, mImg1);//显示图像mImg1
getchar();//停顿,观察图像回车结束
MbufFree(mImg1);
printf("SizeX = %d\nSizeY = %d\nband = %d\n", SizeX, SizeY, band);
delete[] p;//注意这是对unsigned char*内存的释放!
MbufFree(mImg);//注意这是对MIL内存的释放!
MappFreeDefault(MilApplication, MilSystem, MilDisplay, M_NULL, M_NULL);//MIL函数的系统关闭(注意申请后立马关闭!)
return 0;
}
这是代码 编译就显示:error C2065: 'printf' : undeclared identifier和
error C2065: 'getchar' : undeclared identifier 错误 求帮忙
加了 没用
追答你的编译器是VC吧?
我没Mil.h这个东西,没法编译测试。
printf是stdio.h的库函数,一般加了这个头文件就可以的。
你试下把printf和getch的语句注释掉,看编译能不能过去。怀疑是其他问题的堆积。
注释掉是可以编译的
追答那你再写个简单测试程序,就是要#include int main(){printf("hello");} 看能不能编译通过。
本回答被网友采纳