opencv打开任何图片的程序

操作说明:

在窗口上点击右键,在打开的窗口上选择图片.就可以显示出你的图片.是因为我不能打开pgm的图片文件,我就写了这个程序

// ReadImage.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "windows.h"
#include <cv.h>
#include <highgui.h>
#include <string>
using namespace std;
void Foo(int event, int x, int y, int flags, void* param);
TCHAR szFile[MAX_PATH]=_T(""); // 保存获取文件名称的缓冲区。
IplImage* image = 0;
void TestGetOpenFileName(void)                                
{                                                             
    //                                                      
    OPENFILENAME ofn;      // 公共对话框结构。
 ZeroMemory(szFile,MAX_PATH*sizeof(TCHAR));
    // 初始化选择文件对话框。                               
    ZeroMemory(&ofn, sizeof(ofn));                          
    ofn.lStructSize = sizeof(ofn);                          
    ofn.hwndOwner = NULL;                                 
    ofn.lpstrFile = szFile;                                 
    //                                                      
    //                                                      
    ofn.lpstrFile[0] = _T('/0');                            
    ofn.nMaxFile = sizeof(szFile);                          
    ofn.lpstrFilter = _T("All/0*.*/0图片/0*.bmp/0");        
    ofn.nFilterIndex = 1;                                   
    ofn.lpstrFileTitle = NULL;                              
    ofn.nMaxFileTitle = 0;                                  
    ofn.lpstrInitialDir = NULL;                             
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;      
                                                               
    // 显示打开选择文件对话框。                             
    if ( GetOpenFileName(&ofn) )                            
    {                                                       
            //显示选择的文件。                                
            //OutputDebugString(szFile);                        
            //OutputDebugString(_T("/r/n"));                    
                                                               
    }  
}

int _tmain(int argc, _TCHAR* argv[])
{
 cvNamedWindow("Process window",1);
 cvSetMouseCallback("Process window", Foo, NULL);
 cvWaitKey(0);
 if(image!=0)
 {
  cvReleaseImage(&image);
  image=0;
 }
 cvDestroyAllWindows();
 return 0;
}
void Foo(int event, int x, int y, int flags, void* param)
{
 if(CV_EVENT_RBUTTONUP==event)
 {
  TestGetOpenFileName();
  if(lstrlen(szFile)!=0)
  {
   string str=szFile;
   if(image!=0)
   {
    cvReleaseImage(&image);
    image=0;
   }
   image = cvLoadImage(str.c_str(),1);
   cvShowImage("Process window",image);
   //cvReleaseImage(&image);
  }
  //CFileDialog LoadBox(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_EXPLORER);
  //if (LoadBox.DoModal() == IDOK)
  //{
   //string str=LoadBox.GetOFN().lpstrFile;
   //CString str=LoadBox.GetPathName();
  //}
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值