visual studio 12/13基础c++工程建立使用
2017-07-12 17:41
633 查看
颜色区域检测的功能实现
本文主要介绍如何使用vs2012新建一个c++项目实现预期的功能,代码具体实现结合了opencv的功能,因此设计到包含文件和库的配置。 代码实现的功能为将一种特定的颜色从一幅图中检测出来,并转化为二值图显示。
运行环境:
win7 64位系统
visual studio 2013(2012版也适用)
运行debug 32位(win32)
首先,打开vs2013,新建项目工程,工程名中英文皆可,中间为工程放置路径,可以自己选择,本文放置桌面。
上面之后直接下一步,到下面的情况下,选定**空项目**,然后完成工程建立。
右键源文件,添加一个主函数main.cpp,里面包含函数的具体实现代码。
在main.cpp里写入函数的实现部分,代码如下,直接拷贝进去。
#include <iostream> #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; using namespace std; Mat imgHSV; Mat imgThresholded; int iLowH = 20; int iHighH = 35; int iLowS = 80; int iHighS = 255; int iLowV = 80; int iHighV = 255; Mat imgOriginal = imread("666.jpg"); Mat src; void on_track(int) { inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded); //Threshold the image //开操作 (去除一些噪点) Mat element = getStructuringElement(MORPH_RECT, Size(5, 5)); morphologyEx(imgThresholded, imgThresholded, MORPH_OPEN, element); //闭操作 (连接一些连通域) morphologyEx(imgThresholded, imgThresholded, MORPH_CLOSE, element); imshow("Thresholded Image", imgThresholded); //show the thresholded image imshow("原图",src); //char key = (char) waitKey(300); //imshow("Original", imgOriginal); //show the original image ///waitKey(0); } int main( int argc, char** argv ) { //'VideoCapture cap(0); //capture the video from web cam //if ( !cap.isOpened() ) // if not success, exit program //{ // cout << "Cannot open the web cam" << endl; // return -1; //} namedWindow("Control", CV_WINDOW_AUTOSIZE); //create a window called "Control" //Create trackbars in "Control" window cvCreateTrackbar("LowH", "Control", &iLowH, 179,on_track); //Hue (0 - 179) cvCreateTrackbar("HighH", "Control", &iHighH, 179,on_track); cvCreateTrackbar("LowS", "Control", &iLowS, 255,on_track); //Saturation (0 - 255) cvCreateTrackbar("HighS", "Control", &iHighS, 255,on_track); cvCreateTrackbar("LowV", "Control", &iLowV, 255,on_track); //Value (0 - 255) cvCreateTrackbar("HighV", "Control", &iHighV, 255,on_track); // while (true) // { //bool bSuccess = cap.read(imgOriginal); // read a new frame from video // if (!bSuccess) //if not success, break loop //{ // cout << "Cannot read a frame from video stream" << endl; // break; //} resize(imgOriginal,src,Size(720,576)); vector<Mat> hsvSplit; cvtColor(src, imgHSV, COLOR_BGR2HSV); //Convert the captured frame from BGR to HSV //因为我们读取的是彩色图,直方图均衡化需要在HSV空间做 split(imgHSV, hsvSplit); equalizeHist(hsvSplit[2],hsvSplit[2]); merge(hsvSplit,imgHSV); on_track(iLowH); on_track(iHighH); on_track(iLowS); on_track(iHighS); on_track(iLowV); on_track(iHighV); //inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded); //Threshold the image ////开操作 (去除一些噪点) //Mat element = getStructuringElement(MORPH_RECT, Size(5, 5)); //morphologyEx(imgThresholded, imgThresholded, MORPH_OPEN, element); ////闭操作 (连接一些连通域) //morphologyEx(imgThresholded, imgThreshold 4000 ed, MORPH_CLOSE, element); //imshow("Thresholded Image", imgThresholded); //show the thresholded image //waitKey(0); //imshow("Original", imgOriginal); //show the original image //waitKey(0); waitKey(0); // if(key == 27) /// break; // } return 0; }
到这一步,如果是基础的c++代码就可以直接f5运行了。由于本项目调用了opencv的库,所以要进行包含目录和库文件的配置。
此工程在main函数的当前路径下,存入了一个3rd的文件夹,里面包含了一个include和一个lib文件夹。
其中include里位opencv的头文件,lib中为代码运行中对opencv的依赖库文件opencv_x249d.lib; 这里的x为具体lib名,249为opencv的版本号,d为后缀,是debug模式下的依赖库。
在把需要的头文件和库具体放进工程之后,下一步是将工程需要用到的包含文件目录和库文件目录配置好,并且具体给出所需要的lib文件名称。
右键项目,打开属性,这里如果之前电脑用过opencv并且配置过的话,可能这里会有两个绝对路径,就是指项目在电脑里寻找这两个路径及文件。 这种配置方法可以使下次用到opencv库时不用重新配置,缺点是如果将整个工程换到其他电脑上时无法使用,仍需配置。
这里讲第二种配置的方法,给出的路径为当前工程路径,可用性较强。 打开项目属性,找到对应包含目录和库目录,编辑输入上面操作中文件存放的位置。
找到链接器里的输入,编辑,将调用的库名称写进去,让工程能具体找到对应需要的库。
配置完成后,点击应用,这时候之前的红色波浪号报错应该会消失,然后就可以进行最后的编译连接运行代码了,直接f5一键搞定,代码无误,运行结果如下:
到此为止,基本工程的建立使用结束,下一篇将介绍如何将几个文件代码组合实现的功能封装成一个库(提供头文件与lib文件),以供别人使用,在具体项目中用处较大。
相关文章推荐
- c++ ActiveX基础:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 如何使用VS即visual studio建立C++项目或则C源代码
- (转 推荐)c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++基础4:c++工程的动态链接库dll的导出使用方法
- Windows10 + Visual Studio 2017环境为C++工程安装使用ZMQ
- 小白学习c语言一之使用visual studio 2017 建立c语言工程
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 使用visual studio 2013建立一个基于QPC的简单工程
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目 .
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 在C++中使用sqlite的示例(从下载、编译、工程建立、配置、测试代码编写全方位介绍)
- 在C++中使用sqlite的示例(从下载、编译、工程建立、配置、测试代码编写全方位介绍)