- 浏览: 912752 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
最近开始做一个多点触控的课题,网上查阅许多资料后,发现已有先辈把核心函数写好,并建立了一个库——Touchlib.而Touchlib库函数最终调用的是OpenCV里的函数,为了在自己的课题方案中借鉴Touchlib的成熟算法,有必要熟悉Touchlib,因此势必了解OpenCV在VC下的使用。我从网上下载了OpenCV 1.0,依步骤安装到“J:\Program Files\OpenCV\”目录下。在使用VC 6.0调用OpenCV之前,还需做如下配置:
(1)运行VC 6.0,打开opencv/_make目录下的opencv.dsw文件 然后点击'组建(Build)'->' 批组建(Batch Build)'(编译大概几分钟)。
(2)点击'工具(Tools)'->'选项(Options)'->'目录(Directories)选项卡', 在Include files下添加: J:\Program Files\OpenCV\cv\include
J:\Program Files\OpenCV\otherlibs\highgui
J:\Program Files\OpenCV\cxcore\include
J:\Program Files\OpenCV\otherlibs\cvcam\include
(3)在Library files下添加 J:\Program Files\OpenCV\lib
(4)在Source files下添加 J:\Program Files\OpenCV\cv\src
J:\Program Files\OpenCV\cxcore\src
J:\Program Files\OpenCV\cvaux\src
J:\Program Files\OpenCV\otherlibs\highgui
J:\Program Files\OpenCV\otherlibs\_graphics\src
(5)|*谨记*|:每次建立工程,运行前在'工程(Project)'->'设置(Settings)'->'连接(Link)选项卡'->'对象/库模块(Object/library modules)' 中添加: cv.lib highgui.lib cxcore.lib cvcam.lib
下面给出我所编写的一个简单的应用OpenCV的例子。
(1)建立一个基于Dialog的MFC工程OpenCV_Dlg1,在头文件OpenCV_Dlg1Dlg.h中加入“#include <cv.h>”,“#include <highgui.h>”宏命令语句。
(2)添加Picture控件,ID号为IDC_SHOW_WINDOW,图像将显示在该控件中。
(3)给COpenCV_Dlg1Dlg类添加成员变量IplImage * m_cvImage,属性为Public.并在构造函数COpenCV_Dlg1Dlg::COpenCV_Dlg1Dlg()中将其初始化为NULL,即添加“m_cvImage=NULL;”语句。
(4)OpenCV有现成的函数cvShowImage()来显示图像,但用该函数显示图像是却是另外开辟了一个弹出窗口并在其中显示,为了在我们建立的Picture控件中显示图像,需在COpenCV_Dlg1Dlg类中添加成员函数void DrawPicToHDC(IplImage *img, UINT ID),属性设置为Public.DrawPicToHDC()函数代码为: //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::DrawPicToHDC(IplImage *img, UINT ID)
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
CWnd * pWnd;
pWnd=GetDlgItem(ID);
pWnd->SetWindowPos( NULL,0,0,img->width,img->height,SWP_NOZORDER | SWP_NOMOVE );
pWnd->GetClientRect(&rect);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}
//==========================================
(5)添加Button按钮,ID号为IDC_READ_PIC,标题为“读图”,用于打开一幅图片。对该按钮添加消息响应函数OnReadPic(): //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::OnReadPic()
{
// TODO: Add your control notification handler code here
CString Open_Filename;
CFileDialog fDlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"原始图像(*.bmp)|*.bmp|所有文件(*.*)|*.*||",NULL);
if (fDlg.DoModal() == TRUE)
{
Open_Filename = fDlg.GetFileName();
if(m_cvImage)
cvReleaseImage(&m_cvImage);
m_cvImage = cvLoadImage(Open_Filename,1);
if (m_cvImage==0)
MessageBox("Reading Failed");
else
DrawPicToHDC(m_cvImage, IDC_SHOW_WINDOW);
}
}
//===========================================
至此,运行程序,当点击“读图”按钮时,会弹出对话框,提示用户选择需要读入的图片,“确定”后程序便会在Picture控件中将图片显示出来。
(6)添加Edit控件,ID号为IDC_EDIT_TH,应用向导工具MFC ClassWizard给该ID添加int型的成员变量m_Th.通过Edit控件IDC_EDIT_TH,用户可以输入图像分割阈值,程序会将其自动更新到m_Th.
(7)添加Button按钮,ID号为IDC_THRESHOLD,标题为“阈值分割”,点击它将对业已打开的图片做二值化分割。对该按钮添加消息响应函数OnThreshold(): //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::OnThreshold()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_cvImage==NULL)
MessageBox("NO Source Image Found!","Warning");
else
{
IplImage* dst=cvCreateImage( cvSize(m_cvImage->width,m_cvImage->height), m_cvImage->depth, m_cvImage->nChannels );
cvThreshold( m_cvImage, dst, m_Th, 255, CV_THRESH_BINARY);
//原型:void cvThreshold( IplImage* src, IplImage* dst, float thresh, float maxvalue,CvThreshType type);
cvNamedWindow("Threshold"); //设置窗口名称
cvShowImage("Threshold",dst); //显示图片
cvWaitKey(0);
}
}
//============================================
至此,当点击“读图”按钮打开一幅图片,该图片将在Picture控件中显示;在Edit控件IDC_EDIT_TH中输入阈值,并点击“阈值分割”按钮,则对读入的图像做二值化处理,处理结果在一个新弹出窗口中显示。
以上所编写程序是个试验性程序,从中可以反应出用OpenCV编程的一般性步骤。但该程序依然存在Bug:即显示在Picture控件中的图像不会重绘,也就是说如果用另外一个窗口遮挡Picture控件中的图像,当该窗口移去时被遮挡部分的图像便显示一片空白。此问题有待对程序进一步查错。
(1)运行VC 6.0,打开opencv/_make目录下的opencv.dsw文件 然后点击'组建(Build)'->' 批组建(Batch Build)'(编译大概几分钟)。
(2)点击'工具(Tools)'->'选项(Options)'->'目录(Directories)选项卡', 在Include files下添加: J:\Program Files\OpenCV\cv\include
J:\Program Files\OpenCV\otherlibs\highgui
J:\Program Files\OpenCV\cxcore\include
J:\Program Files\OpenCV\otherlibs\cvcam\include
(3)在Library files下添加 J:\Program Files\OpenCV\lib
(4)在Source files下添加 J:\Program Files\OpenCV\cv\src
J:\Program Files\OpenCV\cxcore\src
J:\Program Files\OpenCV\cvaux\src
J:\Program Files\OpenCV\otherlibs\highgui
J:\Program Files\OpenCV\otherlibs\_graphics\src
(5)|*谨记*|:每次建立工程,运行前在'工程(Project)'->'设置(Settings)'->'连接(Link)选项卡'->'对象/库模块(Object/library modules)' 中添加: cv.lib highgui.lib cxcore.lib cvcam.lib
下面给出我所编写的一个简单的应用OpenCV的例子。
(1)建立一个基于Dialog的MFC工程OpenCV_Dlg1,在头文件OpenCV_Dlg1Dlg.h中加入“#include <cv.h>”,“#include <highgui.h>”宏命令语句。
(2)添加Picture控件,ID号为IDC_SHOW_WINDOW,图像将显示在该控件中。
(3)给COpenCV_Dlg1Dlg类添加成员变量IplImage * m_cvImage,属性为Public.并在构造函数COpenCV_Dlg1Dlg::COpenCV_Dlg1Dlg()中将其初始化为NULL,即添加“m_cvImage=NULL;”语句。
(4)OpenCV有现成的函数cvShowImage()来显示图像,但用该函数显示图像是却是另外开辟了一个弹出窗口并在其中显示,为了在我们建立的Picture控件中显示图像,需在COpenCV_Dlg1Dlg类中添加成员函数void DrawPicToHDC(IplImage *img, UINT ID),属性设置为Public.DrawPicToHDC()函数代码为: //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::DrawPicToHDC(IplImage *img, UINT ID)
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
CWnd * pWnd;
pWnd=GetDlgItem(ID);
pWnd->SetWindowPos( NULL,0,0,img->width,img->height,SWP_NOZORDER | SWP_NOMOVE );
pWnd->GetClientRect(&rect);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}
//==========================================
(5)添加Button按钮,ID号为IDC_READ_PIC,标题为“读图”,用于打开一幅图片。对该按钮添加消息响应函数OnReadPic(): //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::OnReadPic()
{
// TODO: Add your control notification handler code here
CString Open_Filename;
CFileDialog fDlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"原始图像(*.bmp)|*.bmp|所有文件(*.*)|*.*||",NULL);
if (fDlg.DoModal() == TRUE)
{
Open_Filename = fDlg.GetFileName();
if(m_cvImage)
cvReleaseImage(&m_cvImage);
m_cvImage = cvLoadImage(Open_Filename,1);
if (m_cvImage==0)
MessageBox("Reading Failed");
else
DrawPicToHDC(m_cvImage, IDC_SHOW_WINDOW);
}
}
//===========================================
至此,运行程序,当点击“读图”按钮时,会弹出对话框,提示用户选择需要读入的图片,“确定”后程序便会在Picture控件中将图片显示出来。
(6)添加Edit控件,ID号为IDC_EDIT_TH,应用向导工具MFC ClassWizard给该ID添加int型的成员变量m_Th.通过Edit控件IDC_EDIT_TH,用户可以输入图像分割阈值,程序会将其自动更新到m_Th.
(7)添加Button按钮,ID号为IDC_THRESHOLD,标题为“阈值分割”,点击它将对业已打开的图片做二值化分割。对该按钮添加消息响应函数OnThreshold(): //----------------------------------------------------------------------------
void COpenCV_Dlg1Dlg::OnThreshold()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_cvImage==NULL)
MessageBox("NO Source Image Found!","Warning");
else
{
IplImage* dst=cvCreateImage( cvSize(m_cvImage->width,m_cvImage->height), m_cvImage->depth, m_cvImage->nChannels );
cvThreshold( m_cvImage, dst, m_Th, 255, CV_THRESH_BINARY);
//原型:void cvThreshold( IplImage* src, IplImage* dst, float thresh, float maxvalue,CvThreshType type);
cvNamedWindow("Threshold"); //设置窗口名称
cvShowImage("Threshold",dst); //显示图片
cvWaitKey(0);
}
}
//============================================
至此,当点击“读图”按钮打开一幅图片,该图片将在Picture控件中显示;在Edit控件IDC_EDIT_TH中输入阈值,并点击“阈值分割”按钮,则对读入的图像做二值化处理,处理结果在一个新弹出窗口中显示。
以上所编写程序是个试验性程序,从中可以反应出用OpenCV编程的一般性步骤。但该程序依然存在Bug:即显示在Picture控件中的图像不会重绘,也就是说如果用另外一个窗口遮挡Picture控件中的图像,当该窗口移去时被遮挡部分的图像便显示一片空白。此问题有待对程序进一步查错。
发表评论
-
破解VS2008
2012-07-30 10:22 0对于VS2008 Team System 版本的破解 开始- ... -
无法解析的外部符号的 3 种可能
2011-08-19 13:21 27341. lib 文件未引入。可使用“#pragma commen ... -
Qt容器测试
2011-08-14 23:39 1012#include "vectortest.h&quo ... -
const_cast,reinterpret_cast,static_cast,dynamic_cast
2011-08-14 13:34 1097static_cast:用于非多态类型的转换。 dynami ... -
C++调用JAVA方法详解
2011-08-13 20:38 978http://public0821.iteye.com/blo ... -
Music Studio项目心得--JNI实现C++调用JAVA (转)
2011-08-13 19:38 2917http://blog.csdn.net/mdl13412/a ... -
让C++和Java相互调用(2)
2011-08-13 12:53 1144http://chnic.iteye.com/blog/236 ... -
JNI编程 —— 让C++和Java相互调用 (一)
2011-08-13 12:51 1239http://chnic.iteye.com/blog/228 ... -
ava生成dll工具ikvm.net
2011-08-08 14:24 1057IKVM.NET的是开源的基于.NET CLR 的Java虚拟 ... -
Vc中得combox的使用
2011-08-01 00:14 1751一、如何添加/删除Combo Box内容1,在Combo Bo ... -
QT中的元对象系统
2011-07-29 23:42 959Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运 ... -
C++中this指针的用法.
2011-07-29 23:20 3778this指针只能在一个类的成员函数中调用,它表示当前对象的地址 ... -
QT Designer
2011-07-28 21:44 1149(一)简单继承方式的实现1、QT Designer ... -
QWidget QMainWindow QDialog 之间的区别
2011-07-28 20:27 1163QWidget类是所有用户界面对象的基类。 窗口部件是 ... -
Qt达人
2011-07-27 23:19 969http://www.yafeilinux.com/ ... -
二十七、Qt数据库(七)QSqlRelationalTableModel(转)
2011-07-27 23:16 5787QSqlRelationalTableModel,该类为单张的 ... -
Qt的LineEdit 输入内容控制
2011-07-24 19:42 3381默认下,LineEdit接受任何字符输入,如何让LineEdi ... -
QT + VS2008 环境配置
2011-07-23 10:26 1774最近学习QT,配置环境 ... -
qt4:读取 access 数据库
2011-07-22 09:04 1054一个读取access的例子 1。---------- ... -
QT安装
2011-07-17 22:48 861http://hexlee.iteye.com/blog/49 ...
相关推荐
【标题】"VS_OPENCV配置.rar"是一个压缩包,其中包含了在Visual Studio 2015(VS2015)环境下配置OpenCV 2.4.13的详细步骤和设置。OpenCV(开源计算机视觉库)是一个广泛使用的图像处理和计算机视觉库,而VS2015是...
以下是对OpenCV配置的详细说明: 1. **OpenCV库的基本结构** - **头文件**:在编程时,为了调用OpenCV的功能,我们需要在代码中包含相应的头文件。这些文件定义了库的函数、类和常量。 - **lib文件**:在编译链接...
### OpenCV配置指南 在计算机视觉领域,OpenCV(Open Source Computer Vision Library)是一个非常重要的开源库,提供了大量的图像处理和计算机视觉算法。对于开发者来说,掌握如何在Visual Studio环境中正确配置...
本篇文章将详细介绍压缩包中包含的四个关键DLL文件及其在OpenCV配置中的作用。 1. concrt140d.dll:这是Microsoft并发运行时库(Concurrent Runtime Library)的调试版本。在C++程序中,尤其是使用了C++11或更高...
在本文中,我们将深入探讨如何在Windows环境下,利用OpenCV3.0和Visual Studio 2013来配置和操作Basler工业相机。首先,我们要理解Basler相机是一款高质量、高性能的工业级数字相机,广泛应用于自动化、检测、科研等...
### OpenCV配置详解 OpenCV(Open Source Computer Vision Library)是一款强大的开源计算机视觉库,它提供了大量的图像处理和机器视觉算法。为了使开发者能够轻松上手并利用OpenCV的功能进行开发,本文将详细介绍...
**OpenCV配置VS2012详解** OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于图像处理和计算机视觉相关的项目。Visual Studio 2012(VS2012)是微软的开发环境,适用于C++编程。在...
### vc中opencv配置 在计算机视觉领域,OpenCV(开源计算机视觉库)是一个非常重要的工具,它提供了大量的图像处理和机器视觉算法。要在Visual C++(VC)环境中配置并使用OpenCV,需要按照一定的步骤来设置环境。...
在Windows操作系统上使用OpenCV时,有时会遇到需要额外配置库文件的情况,以确保程序正常运行。这些库文件通常与Visual Studio的运行时环境相关,因为OpenCV的编译器依赖于这些库来提供必要的功能。 标题中提到的四...
【OpenCV配置Visual Studio方法】 OpenCV是一款强大的开源计算机视觉库,广泛应用于图像处理和机器学习领域。在Windows上,通常使用Visual Studio作为开发环境。本文将详细介绍如何配置OpenCV以在Visual Studio中...
本文将详细介绍如何在Visual Studio环境中配置OpenCV,并基于提供的"opencv配置文件.zip_Config_opencv"压缩包进行操作。 首先,我们要了解配置OpenCV的主要步骤,这通常包括以下几个关键环节: 1. **下载与解压...
如果这个程序能够成功显示图片,那么基本的OpenCV配置就完成了。更复杂的测试可能包括使用OpenCV的特定功能,例如: ```cpp #include <opencv2/objdetect.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/...
### OpenCV配置依赖属性详解 #### 一、OpenCV简介 OpenCV(开源计算机视觉库)是一个跨平台的计算机视觉和机器学习软件库。它主要由C++编写,并且可以用于开发实时操作的应用程序。OpenCV支持多种编程语言,如...
### 完美Opencv配置过程详解 #### 一、引言 在计算机视觉领域,OpenCV(开源计算机视觉库)是一款强大的工具包,它提供了大量的图像处理和机器视觉功能。为了能够有效地使用OpenCV进行开发,正确地配置开发环境至关...
### OpenCV配置属性表详解 1. **包含目录(Include Directories)**: 这些目录指定了包含OpenCV头文件的路径。`opencv2413.props` 文件会设置`<IncludePath>`,确保Visual Studio能够找到所有必要的头文件,如`...
### vs2010+opencv配置详解 #### 一、前言 在计算机视觉领域,OpenCV 是一款非常流行的开源库,它提供了大量的图像处理和机器视觉算法。Visual Studio 2010(以下简称VS2010)作为一款功能强大的集成开发环境,...
配置这些库文件通常是因为你的系统中没有安装相应的Visual C++ Redistributable或你正在运行的是OpenCV的调试版本。若在尝试运行OpenCV程序时遇到“找不到某.dll”错误,可以将这些文件复制到系统的System32目录下,...