openCV 对话框 显示图像
来源:互联网 发布:c语言模块化编程pdf 编辑:程序博客网 时间:2024/04/28 16:57
// CVDlgReadDlg.h : 头文件//#pragma once#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;// CCVDlgReadDlg 对话框class CCVDlgReadDlg : public CDialog{// 构造public:CCVDlgReadDlg(CWnd* pParent = NULL);// 标准构造函数~CCVDlgReadDlg();int imageClone(IplImage* pi, IplImage** ppo); int imageType(IplImage* p); LPBITMAPINFO CtreateMapInfo(IplImage* workImg,int flag);BOOL CCVDlgReadDlg::Save(LPCTSTR csFileName, IplImage* m_pImg);BOOL Load(IplImage* srcImg, LPCTSTR csFileName);string CStringTostring(CString str);// 对话框数据enum { IDD = IDD_CVDLGREAD_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedOpenImage();afx_msg void OnBnClickedSave();public:Mat m_srcImg;IplImage*m_pImg;IplImage*m_pImgSrcToSave;IplImage* saveImg;IplImage* workImg;LPBITMAPINFO m_lpBmi;intm_Display;int m_dibFlag;int m_SaveFlag;int m_ImageType;CString m_csFileName;};
// CVDlgReadDlg.cpp : 实现文件//#include "stdafx.h"#include "CVDlgRead.h"#include "CVDlgReadDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif//---------------------------------------------------------// VGA 256色默认调色板数据RGBQUAD VgaDefPal[256] = {{0x00,0x00,0x00,0x00},{0xa8,0x00,0x00,0x00},{0x00,0xa8,0x00,0x00},{0xa8,0xa8,0x00,0x00},{0x00,0x00,0xa8,0x00},{0xa8,0x00,0xa8,0x00},{0x00,0x54,0xa8,0x00},{0xa8,0xa8,0xa8,0x00},{0x54,0x54,0x54,0x00},{0xfc,0x54,0x54,0x00},{0x54,0xfc,0x54,0x00},{0xfc,0xfc,0x54,0x00},{0x54,0x54,0xfc,0x00},{0xfc,0x54,0xfc,0x00},{0x54,0xfc,0xfc,0x00},{0xfc,0xfc,0xfc,0x00},{0x00,0x00,0x00,0x00},{0x14,0x14,0x14,0x00},{0x20,0x20,0x20,0x00},{0x2c,0x2c,0x2c,0x00},{0x38,0x38,0x38,0x00},{0x44,0x44,0x44,0x00},{0x50,0x50,0x50,0x00},{0x60,0x60,0x60,0x00},{0x70,0x70,0x70,0x00},{0x80,0x80,0x80,0x00},{0x90,0x90,0x90,0x00},{0xa0,0xa0,0xa0,0x00},{0xb4,0xb4,0xb4,0x00},{0xc8,0xc8,0xc8,0x00},{0xe0,0xe0,0xe0,0x00},{0xfc,0xfc,0xfc,0x00},{0xfc,0x00,0x00,0x00},{0xfc,0x00,0x40,0x00},{0xfc,0x00,0x7c,0x00},{0xfc,0x00,0xbc,0x00},{0xfc,0x00,0xfc,0x00},{0xbc,0x00,0xfc,0x00},{0x7c,0x00,0xfc,0x00},{0x40,0x00,0xfc,0x00},{0x00,0x00,0xfc,0x00},{0x00,0x40,0xfc,0x00},{0x00,0x7c,0xfc,0x00},{0x00,0xbc,0xfc,0x00},{0x00,0xfc,0xfc,0x00},{0x00,0xfc,0xbc,0x00},{0x00,0xfc,0x7c,0x00},{0x00,0xfc,0x40,0x00},{0x00,0xfc,0x00,0x00},{0x40,0xfc,0x00,0x00},{0x7c,0xfc,0x00,0x00},{0xbc,0xfc,0x00,0x00},{0xfc,0xfc,0x00,0x00},{0xfc,0xbc,0x00,0x00},{0xfc,0x7c,0x00,0x00},{0xfc,0x40,0x00,0x00},{0xfc,0x7c,0x7c,0x00},{0xfc,0x7c,0x9c,0x00},{0xfc,0x7c,0xbc,0x00},{0xfc,0x7c,0xdc,0x00},{0xfc,0x7c,0xfc,0x00},{0xdc,0x7c,0xfc,0x00},{0xbc,0x7c,0xfc,0x00},{0x9c,0x7c,0xfc,0x00},{0x7c,0x7c,0xfc,0x00},{0x7c,0x9c,0xfc,0x00},{0x7c,0xbc,0xfc,0x00},{0x7c,0xdc,0xfc,0x00},{0x7c,0xfc,0xfc,0x00},{0x7c,0xfc,0xdc,0x00},{0x7c,0xfc,0xbc,0x00},{0x7c,0xfc,0x9c,0x00},{0x7c,0xfc,0x7c,0x00},{0x9c,0xfc,0x7c,0x00},{0xbc,0xfc,0x7c,0x00},{0xdc,0xfc,0x7c,0x00},{0xfc,0xfc,0x7c,0x00},{0xfc,0xdc,0x7c,0x00},{0xfc,0xbc,0x7c,0x00},{0xfc,0x9c,0x7c,0x00},{0xfc,0xb4,0xb4,0x00},{0xfc,0xb4,0xc4,0x00},{0xfc,0xb4,0xd8,0x00},{0xfc,0xb4,0xe8,0x00},{0xfc,0xb4,0xfc,0x00},{0xe8,0xb4,0xfc,0x00},{0xd8,0xb4,0xfc,0x00},{0xc4,0xb4,0xfc,0x00},{0xb4,0xb4,0xfc,0x00},{0xb4,0xc4,0xfc,0x00},{0xb4,0xd8,0xfc,0x00},{0xb4,0xe8,0xfc,0x00},{0xb4,0xfc,0xfc,0x00},{0xb4,0xfc,0xe8,0x00},{0xb4,0xfc,0xd8,0x00},{0xb4,0xfc,0xc4,0x00},{0xb4,0xfc,0xb4,0x00},{0xc4,0xfc,0xb4,0x00},{0xd8,0xfc,0xb4,0x00},{0xe8,0xfc,0xb4,0x00},{0xfc,0xfc,0xb4,0x00},{0xfc,0xe8,0xb4,0x00},{0xfc,0xd8,0xb4,0x00},{0xfc,0xc4,0xb4,0x00},{0x70,0x00,0x00,0x00},{0x70,0x00,0x1c,0x00},{0x70,0x00,0x38,0x00},{0x70,0x00,0x54,0x00},{0x70,0x00,0x70,0x00},{0x54,0x00,0x70,0x00},{0x38,0x00,0x70,0x00},{0x1c,0x00,0x70,0x00},{0x00,0x00,0x70,0x00},{0x00,0x1c,0x70,0x00},{0x00,0x38,0x70,0x00},{0x00,0x54,0x70,0x00},{0x00,0x70,0x70,0x00},{0x00,0x70,0x54,0x00},{0x00,0x70,0x38,0x00},{0x00,0x70,0x1c,0x00},{0x00,0x70,0x00,0x00},{0x1c,0x70,0x00,0x00},{0x38,0x70,0x00,0x00},{0x54,0x70,0x00,0x00},{0x70,0x70,0x00,0x00},{0x70,0x54,0x00,0x00},{0x70,0x38,0x00,0x00},{0x70,0x1c,0x00,0x00},{0x70,0x38,0x38,0x00},{0x70,0x38,0x44,0x00},{0x70,0x38,0x54,0x00},{0x70,0x38,0x60,0x00},{0x70,0x38,0x70,0x00},{0x60,0x38,0x70,0x00},{0x54,0x38,0x70,0x00},{0x44,0x38,0x70,0x00},{0x38,0x38,0x70,0x00},{0x38,0x44,0x70,0x00},{0x38,0x54,0x70,0x00},{0x38,0x60,0x70,0x00},{0x38,0x70,0x70,0x00},{0x38,0x70,0x60,0x00},{0x38,0x70,0x54,0x00},{0x38,0x70,0x44,0x00},{0x38,0x70,0x38,0x00},{0x44,0x70,0x38,0x00},{0x54,0x70,0x38,0x00},{0x60,0x70,0x38,0x00},{0x70,0x70,0x38,0x00},{0x70,0x60,0x38,0x00},{0x70,0x54,0x38,0x00},{0x70,0x44,0x38,0x00},{0x70,0x50,0x50,0x00},{0x70,0x50,0x58,0x00},{0x70,0x50,0x60,0x00},{0x70,0x50,0x68,0x00},{0x70,0x50,0x70,0x00},{0x68,0x50,0x70,0x00},{0x60,0x50,0x70,0x00},{0x58,0x50,0x70,0x00},{0x50,0x50,0x70,0x00},{0x50,0x58,0x70,0x00},{0x50,0x60,0x70,0x00},{0x50,0x68,0x70,0x00},{0x50,0x70,0x70,0x00},{0x50,0x70,0x68,0x00},{0x50,0x70,0x60,0x00},{0x50,0x70,0x58,0x00},{0x50,0x70,0x50,0x00},{0x58,0x70,0x50,0x00},{0x60,0x70,0x50,0x00},{0x68,0x70,0x50,0x00},{0x70,0x70,0x50,0x00},{0x70,0x68,0x50,0x00},{0x70,0x60,0x50,0x00},{0x70,0x58,0x50,0x00},{0x40,0x00,0x00,0x00},{0x40,0x00,0x10,0x00},{0x40,0x00,0x20,0x00},{0x40,0x00,0x30,0x00},{0x40,0x00,0x40,0x00},{0x30,0x00,0x40,0x00},{0x20,0x00,0x40,0x00},{0x10,0x00,0x40,0x00},{0x00,0x00,0x40,0x00},{0x00,0x10,0x40,0x00},{0x00,0x20,0x40,0x00},{0x00,0x30,0x40,0x00},{0x00,0x40,0x40,0x00},{0x00,0x40,0x30,0x00},{0x00,0x40,0x20,0x00},{0x00,0x40,0x10,0x00},{0x00,0x40,0x00,0x00},{0x10,0x40,0x00,0x00},{0x20,0x40,0x00,0x00},{0x30,0x40,0x00,0x00},{0x40,0x40,0x00,0x00},{0x40,0x30,0x00,0x00},{0x40,0x20,0x00,0x00},{0x40,0x10,0x00,0x00},{0x40,0x20,0x20,0x00},{0x40,0x20,0x28,0x00},{0x40,0x20,0x30,0x00},{0x40,0x20,0x38,0x00},{0x40,0x20,0x40,0x00},{0x38,0x20,0x40,0x00},{0x30,0x20,0x40,0x00},{0x28,0x20,0x40,0x00},{0x20,0x20,0x40,0x00},{0x20,0x28,0x40,0x00},{0x20,0x30,0x40,0x00},{0x20,0x38,0x40,0x00},{0x20,0x40,0x40,0x00},{0x20,0x40,0x38,0x00},{0x20,0x40,0x30,0x00},{0x20,0x40,0x28,0x00},{0x20,0x40,0x20,0x00},{0x28,0x40,0x20,0x00},{0x30,0x40,0x20,0x00},{0x38,0x40,0x20,0x00},{0x40,0x40,0x20,0x00},{0x40,0x38,0x20,0x00},{0x40,0x30,0x20,0x00},{0x40,0x28,0x20,0x00},{0x40,0x2c,0x2c,0x00},{0x40,0x2c,0x30,0x00},{0x40,0x2c,0x34,0x00},{0x40,0x2c,0x3c,0x00},{0x40,0x2c,0x40,0x00},{0x3c,0x2c,0x40,0x00},{0x34,0x2c,0x40,0x00},{0x30,0x2c,0x40,0x00},{0x2c,0x2c,0x40,0x00},{0x2c,0x30,0x40,0x00},{0x2c,0x34,0x40,0x00},{0x2c,0x3c,0x40,0x00},{0x2c,0x40,0x40,0x00},{0x2c,0x40,0x3c,0x00},{0x2c,0x40,0x34,0x00},{0x2c,0x40,0x30,0x00},{0x2c,0x40,0x2c,0x00},{0x30,0x40,0x2c,0x00},{0x34,0x40,0x2c,0x00},{0x3c,0x40,0x2c,0x00},{0x40,0x40,0x2c,0x00},{0x40,0x3c,0x2c,0x00},{0x40,0x34,0x2c,0x00},{0x40,0x30,0x2c,0x00},{0xa8,0xa8,0xa8,0x00},{0x54,0xfc,0xfc,0x00},{0xfc,0x54,0xfc,0x00},{0xfc,0xfc,0x54,0x00},{0xfc,0x54,0x54,0x00},{0x54,0xfc,0x54,0x00},{0x54,0x54,0xfc,0x00},{0xfc,0xfc,0xfc,0x00} };RGBQUAD VgaColorTab[256];// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CCVDlgReadDlg 对话框CCVDlgReadDlg::CCVDlgReadDlg(CWnd* pParent /*=NULL*/): CDialog(CCVDlgReadDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);m_pImg = NULL;m_pImgSrcToSave = NULL;saveImg = NULL;workImg = NULL;m_lpBmi = 0;m_dibFlag = 0;m_ImageType= 0;m_csFileName = "";m_Display = -1;}CCVDlgReadDlg::~CCVDlgReadDlg(){if (saveImg)cvReleaseImage(&saveImg); // 释放位图if (workImg)cvReleaseImage(&workImg);if (m_lpBmi)free(m_lpBmi); // 释放位图信息}void CCVDlgReadDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CCVDlgReadDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_OPEN_IMAGE, &CCVDlgReadDlg::OnBnClickedOpenImage)ON_BN_CLICKED(IDC_SAVE, &CCVDlgReadDlg::OnBnClickedSave)END_MESSAGE_MAP()// CCVDlgReadDlg 消息处理程序BOOL CCVDlgReadDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}void CCVDlgReadDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,// 这将由框架自动完成。void CCVDlgReadDlg::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文if (IsIconic()){SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}//---------------------------------------------------------if(m_pImg){if(m_Display == 0){// 复制图像imageClone(m_pImg, &saveImg);m_dibFlag = imageClone(saveImg, &workImg);// 判断图像类型m_ImageType = imageType(workImg);m_SaveFlag = m_ImageType;m_Display = 1;}}if (m_dibFlag) { // DIB 结构改变,创建位图信息头if (m_lpBmi)free(m_lpBmi);m_lpBmi = CtreateMapInfo(workImg,m_dibFlag);m_dibFlag = 0;}// 图像数据char* pBits;if(workImg)pBits = workImg->imageData;// 显示位图if(workImg){StretchDIBits(dc.m_hDC,0, 0, workImg->width, workImg->height,0, 0, workImg->width, workImg->height,pBits, m_lpBmi, DIB_RGB_COLORS, SRCCOPY);}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR CCVDlgReadDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}/************************************************************************函数:OnBnClickedOpenImage功能:加载图像************************************************************************/void CCVDlgReadDlg::OnBnClickedOpenImage(){CString csBMP = "BMP Files(*.BMP)|*.BMP|";CString csJPG = "JPEG Files(*.JPG)|*.JPG|";CString csTIF = "TIF Files(*.TIF)|*.TIF|";CString csPNG = "PNG Files(*.PNG)|*.PNG|";CString csDIB = "DIB Files(*.DIB)|*.DIB|";CString csPBM = "PBM Files(*.PBM)|*.PBM|";CString csPGM = "PGM Files(*.PGM)|*.PGM|";CString csPPM = "PPM Files(*.PPM)|*.PPM|";CString csSR = "SR Files(*.SR) |*.SR|";CString csRAS = "RAS Files(*.RAS)|*.RAS||";CString csFilter = csJPG + csBMP + csTIF + csPNG + csDIB+ csPBM + csPGM + csPPM + csSR + csRAS;CString name[]={"", "bmp" ,"jpg", "tif", "png", "dib","pbm", "pgm", "ppm", "sr", "ras", ""};CString strFileName;CString strExtension;// 文件存盘对话框CFileDialog FileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, csFilter);if (FileDlg.DoModal() == IDOK ) { // 载入图像m_csFileName = FileDlg.GetPathName();const char *lpctStr = (LPCTSTR)m_csFileName;Load(m_pImg, lpctStr);} Invalidate(TRUE);}/************************************************************************函数:CStringTostring功能:将CString转换为string************************************************************************/string CCVDlgReadDlg::CStringTostring(CString str){string s;s.append(str.GetBuffer(str.GetLength()));str.ReleaseBuffer();return s;}/************************************************************************//* 函数名:Load 参 数:IplImage** pp LPCTSTR csFileName 返回值:BOOL 功 能:载入图像*//************************************************************************/BOOL CCVDlgReadDlg::Load(IplImage* srcImg, LPCTSTR csFileName){srcImg = cvLoadImage(csFileName, -1); // 读图像文件(DSCV)if (!srcImg) return(false);// 载入的图像未调整大小,用于保存m_pImgSrcToSave = srcImg;// 调整图像大小,以方便显示IplImage * imageresize = cvCreateImage(cvSize(400, 400),IPL_DEPTH_8U, 3); cvResize(srcImg, imageresize,CV_INTER_LINEAR);cvFlip(imageresize); // 与 DIB 像素结构一致m_pImg = imageresize;Mat I(m_pImg); // 将IplImage转为MatI.copyTo(m_srcImg);m_Display = 0;return(true); }/************************************************************************//* 函数名:imageClone 参 数:IplImage* pi IplImage** ppo 返回值:int 功 能:复制 IplImage 位图*//************************************************************************/int CCVDlgReadDlg::imageClone(IplImage* pi, IplImage** ppo) {if (*ppo) {cvReleaseImage(ppo); // 释放原来位图}(*ppo) = cvCloneImage(pi); // 复制新位图return(1);}/************************************************************************//* 函数名:imageType 参 数:IplImage* p 返回值:int 功 能:检查图像类型*//************************************************************************/int CCVDlgReadDlg::imageType(IplImage* p) {int i, j, k, bpl, n, pg[256];BYTE *buf;k = p->nChannels;// 检查二值图像if (k == 1) { for (i = 0; i < 256; i++) pg[i] = 0;buf = (BYTE*)p->imageData;bpl = p->widthStep;for (i = 0; i < p->height; i++){for (j = 0; j < p->width; j++) pg[buf[j]]++;buf+=bpl;}for (i = 0, n = 0; i < 256; i++){if (pg[i]) n++;}if (n==2) k=-1; // 二值图像}return(k);}/************************************************************************//* 函数名:CtreateMapInfo 参 数:IplImage* workImg int flag 返回值:LPBITMAPINFO 功 能:创建位图信息头*//************************************************************************/LPBITMAPINFO CCVDlgReadDlg::CtreateMapInfo(IplImage* workImg,int flag){ BITMAPINFOHEADER BIH = {40, 1, 1, 1, 8, 0, 0, 0, 0, 0, 0};LPBITMAPINFO lpBmi;int wid,hei,bits,colors,i;wid =workImg->width;hei =workImg->height;bits=workImg->depth*workImg->nChannels;if (bits > 8) colors=0;else colors = 1 << bits;lpBmi = (LPBITMAPINFO) malloc(40 + 4 * colors);BIH.biWidth = wid;BIH.biHeight = hei;BIH.biBitCount= (BYTE) bits;memcpy(lpBmi, &BIH, 40); // 复制位图信息头if (bits == 8) // 256 色位图{ if (flag == 1) // 设置灰阶调色板{ for (i = 0; i < 256; i++) {VgaColorTab[i].rgbRed = (BYTE) i;VgaColorTab[i].rgbGreen = (BYTE) i;VgaColorTab[i].rgbBlue = (BYTE) i;}memcpy(lpBmi->bmiColors, VgaColorTab, 1024);}else if (flag == 2) // 设置默认调色板{ memcpy(lpBmi->bmiColors, VgaDefPal, 1024);}else if (flag == 3) // 设置自定义调色板{ memcpy(lpBmi->bmiColors, VgaColorTab, 1024);}}return(lpBmi);}/************************************************************************//* 函数名:Save 参 数:LPCTSTR csFileName IplImage* m_pImg 返回值:BOOL 功 能:保存图像*//************************************************************************/BOOL CCVDlgReadDlg::Save(LPCTSTR csFileName, IplImage* m_pImg){//cvFlip(m_pImg); // 恢复原 OpenCV 位图结构 int bl = cvSaveImage(csFileName, m_pImg); // 图像存盘return(bl);}void CCVDlgReadDlg::OnBnClickedSave(){CString csBMP = "BMP Files(*.BMP)|*.BMP|";CString csJPG = "JPEG Files(*.JPG)|*.JPG|";CString csTIF = "TIF Files(*.TIF)|*.TIF|";CString csPNG = "PNG Files(*.PNG)|*.PNG|";CString csDIB = "DIB Files(*.DIB)|*.DIB|";CString csPBM = "PBM Files(*.PBM)|*.PBM|";CString csPGM = "PGM Files(*.PGM)|*.PGM|";CString csPPM = "PPM Files(*.PPM)|*.PPM|";CString csSR = "SR Files(*.SR) |*.SR|";CString csRAS = "RAS Files(*.RAS)|*.RAS||";CString csFilter = csBMP + csJPG + csTIF + csPNG + csDIB+ csPBM + csPGM + csPPM + csSR + csRAS;CString name[]={"", "bmp" ,"jpg", "tif", "png", "dib","pbm", "pgm", "ppm", "sr", "ras", ""};CString strFileName;CString strExtension;CFileDialog FileDlg(false, NULL, NULL, OFN_HIDEREADONLY, csFilter);// 文件存盘对话框if (FileDlg.DoModal() == IDOK ) // 选择了文件名{ strFileName = FileDlg.m_ofn.lpstrFile;if (FileDlg.m_ofn.nFileExtension == 0) // 无文件后缀{ strExtension = name[FileDlg.m_ofn.nFilterIndex];strFileName = strFileName + '.' + strExtension; // 加文件后缀}Save(strFileName, m_pImgSrcToSave); // 当前画面存盘} }
- openCV 对话框 显示图像
- Qt对话框显示opencv读取的图像
- OpenCV图像显示在VC对话框中的方法
- [转]OpenCV图像显示在VC对话框中的方法
- OpenCV图像显示在VC对话框中的方法
- MFC+Opencv在对话框程序中显示出一幅图像
- OpenCV图像或视频显示在VC对话框中的方法
- c++ opencv显示对话框
- Opencv显示图像
- opencv显示图像
- OpenCv图像载入显示
- opencv显示图像(3)
- OPENCV 中的显示图像
- opencv 图像显示IplImage
- QT OpenCv 图像显示
- opencv显示图像问题
- OPENCV--显示图像
- OpenCV+MFC显示图像
- 25款漂亮的CSS3特效代码
- SVN中检出(check out) 和 导出(export) 的区别
- LDAP的Filter查询
- HOW TO: 添加对托管的 Visual C++ 项目的引用
- [WPF]Show新窗口时TextBox等控件无法输入问题解决方法
- openCV 对话框 显示图像
- 家长育儿必备,孩子身边的故事大王《故事口袋-听听》免费下载
- 高级字符驱动程序操作——阻塞型I/O
- log4c 如何使用,以及如何自定义Logout
- git push用法和常见问题分析
- SQLSERVER三大范式
- Android学习备忘003——Activity之间滑动转场
- MYSQL 获取当前时间加上一个月,分,秒
- IPTraf介绍 --网络状况监视工具