问题描述
- 关于C++6.0的图像水平镜像变换
- 关于C++6.0的图像水平镜像变换
头文件
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif#ifndef LIB_H
#define LIB_H
struct image
{
unsigned char * ptr;
int numcolors;//3---彩色(排序方式RGB);1----灰度或者黑白图像
int width; /* image width in pixels /
int height; / image height in pixels */
};#ifdef __cplusplus
extern ""C""
{#endif
//函数声明
MYDLL_API int imgfiletomat(char *filenamestruct image *pimage);//-1表示读取图像文件错误;1表示读取正常
MYDLL_API void mattoimgfile(char *filenamestruct image *pimage);
MYDLL_API void imgshow(char *windownamestruct image *pimage);MYDLL_API int wait(int delay);//延迟delay毫秒数。若等于0,则无限制的等待按键事件
MYDLL_API int createwindow(char *windowname);//窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。
MYDLL_API void destroywindow(char *windowname);//要被销毁的窗口的名字。
MYDLL_API void destroyallwindows(void);//销毁所有窗口
#ifdef __cplusplus}
#endif
#endif** 运行主程序 **
#include ""mydll.h""
#include
#include
#include
#include
void main()
{
struct image img1;
FILE *fp1;
unsigned char *pdata;
int temp;
int ijk=0;
int heightwide;fp1=fopen(""D:\学习\imagetest\imagedsp\Debug\1.txt""w"");imgfiletomat(""D:\学习\imagetest\imagedsp\Debug\1.jpg"" &img1);createwindow(""name1"");imgshow(""name1""&img1);wait(0); //等待按键height=img1.height;wide=img1.width;pdata=img1.ptr;for(i=0;i<height;i++)for(j=0;j<wide /2*3;j++){ temp=*(pdata+j); *(pdata+j)=*(pdata+j+3*wide-j/3*3*2-3); *(pdata+j+3*wide-j/3*3*2-3)=temp;} createwindow(""name1"");imgshow(""name1""&img1);wait(0); //等待按键
}
没有错误,但不知道为什么图像没有发生变化
解决方案
也没看出来啥大问题,你好好单步调试看看
解决方案二:
daimaluoji 有问题, 运行没错 ,调试一下代码....