opencv 打开gif图片
来源:互联网 发布:怎么用淘宝客推广 编辑:程序博客网 时间:2024/04/30 18:32
我直接来全套把,不然很多新手不知道怎么弄
1、首先下载FreeImage3160Win32.zip版本有可能不同,链接赏给你:下载地址点击打开链接
2、打开找到FreeImage.dll FreeImage.lib, FreeImage.h拷贝到项目中去。
3、开始使用在cpp中导入静态库
#include "FreeImage.h"
#pragma comment(lib,"FreeImage.lib")
下面的转化代码我就拷贝一个他人的了,嘻嘻。节约时间
IplImage* gif2ipl(const char* filename){FreeImage_Initialise(); //load the FreeImage function lib FREE_IMAGE_FORMAT fif = FIF_GIF;FIBITMAP* fiBmp = FreeImage_Load(fif, filename, GIF_DEFAULT);FIMULTIBITMAP * pGIF = FreeImage_OpenMultiBitmap(fif, filename, 0, 1, 0, GIF_PLAYBACK);// FIBITMAPINFO fiBmpInfo = getfiBmpInfo(fiBmp); int gifImgCnt = FreeImage_GetPageCount(pGIF);FIBITMAP * pFrame;int width, height;width = FreeImage_GetWidth(fiBmp);height = FreeImage_GetHeight(fiBmp);IplImage * iplImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);iplImg->origin = 1;//should set to 1-top-left structure(Windows bitmap style) RGBQUAD* ptrPalette = new RGBQUAD; // = FreeImage_GetPalette(fiBmp); BYTE intens;BYTE* pIntensity = &intens;cvNamedWindow("gif", 0);printf("gifImgCnt %d \n", gifImgCnt);for (int curFrame = 0; curFrame < gifImgCnt; curFrame++){pFrame = FreeImage_LockPage(pGIF, curFrame);//ptrPalette = FreeImage_GetPalette(pFrame); char * ptrImgDataPerLine;for (int i = 0; i < height; i++){ptrImgDataPerLine = iplImg->imageData + i*iplImg->widthStep;for (int j = 0; j < width; j++){//get the pixel index //FreeImage_GetPixelIndex(pFrame,j,i,pIntensity); FreeImage_GetPixelColor(pFrame, j, i, ptrPalette);ptrImgDataPerLine[3 * j] = ptrPalette->rgbBlue;ptrImgDataPerLine[3 * j + 1] = ptrPalette->rgbGreen;ptrImgDataPerLine[3 * j + 2] = ptrPalette->rgbRed;//ptrImgDataPerLine[3*j] = ptrPalette[intens].rgbBlue; //ptrImgDataPerLine[3*j+1] = ptrPalette[intens].rgbGreen; //ptrImgDataPerLine[3*j+2] = ptrPalette[intens].rgbRed; }}printf("convert curFrame end %d \n", curFrame);cvShowImage("gif", iplImg);cvWaitKey(30);FreeImage_UnlockPage(pGIF, pFrame, 1);}FreeImage_Unload(fiBmp);FreeImage_DeInitialise();return iplImg;}
IplImage *pImage = cvLoadImage("Verifycode.gif", CV_LOAD_IMAGE_UNCHANGED);if (pImage==NULL){const char * ch = "Verifycode.gif";pImage = gif2ipl("Verifycode.gif");}
解释一下上面的代码,我是从网络中下载来的图,有可能是其他格式,如果打不开,说明是gif。
看来以后不能乱用他人的代码,得先自己写一写。这个代码有问题,内存没有释放完毕。也就是说你打开了一张图,他会一直占用哈哈 20141226
在return前面加一条FreeImage_CloseMultiBitmap(pGIF, GIF_DEFAULT);
请注意了!
0 0
- opencv 打开gif图片
- 编辑器能否打开GIF格式图片?
- MAC系统下如何打开 gif图片
- opencv打开图片保存图片
- OpenCV、EmguCV之打开图片
- Opencv打开图片接口说明
- 基于OPENCV的图片打开
- opencv结合MFC打开图片
- Qt调用OpenCV打开图片
- MFC实现打开BMP JPG或GIF图片
- VC实现打开BMP JPG或GIF图片
- VC实现打开BMP JPG或GIF图片(二)|VC/MFC/打开图片
- gif图片
- opencv打开任何图片的程序
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010MFC打开图片 + OpenCV环境配置
- opencv cmd方式调用程序打开图片
- JAVA校验和算法的实现
- 关于CSS中的float和position
- codeforces 498A crazy town
- 让 C 程序更高效的 10 个建议
- 第一篇博客~
- opencv 打开gif图片
- java中读取文件时应该采用什么编码
- 派镇景点
- 解决Android客户端运行Cococs2dx编写的游戏程序遇到的意外游戏中断导致的游戏黑屏问题
- js Jquery 操作Select 下拉框
- First step.
- css 简单进度条
- RestFul Api 定义流程规范
- Android 触摸屏手势识别