c++ opencv_c++opencv - CSDN
精华内容
参与话题
  • OpenCv专栏:https://blog.csdn.net/qq_40515692/article/details/102885061 2020/2/5更新: VS2019/VS2017 OpenCv配置: ...VS对于C++配置外部库有两种方式,另一种写在了后面,这里介绍的是新建配置...

    欢迎大家访问我的github:https://github.com/Iamttp 有问题欢迎在评论留言呀!

    OpenCv专栏:https://blog.csdn.net/qq_40515692/article/details/102885061


    2020/2/5更新:

    VS2019/VS2017 OpenCv配置:

    VS对于C++配置外部库有两种方式,另一种写在了后面,这里介绍的是新建配置文件的方式,这种方式好处是一劳永逸,我重装电脑后直接用的之前在VS2017上生成的配置文件配置的VS2019。所以非常方便。

     

    首先是VS的OpenCv配置,外部库目录指定和外部包含文件的指定。

    1. 指定建立的工程为空白工程。
    2. 建立完工程之后,我们选中解决方案栏中的Resource Files目录(即源码目录),然后新建一个C++源码文件。
    3. 设置源码的文件名,例如:Main,然后创建此源码文件到工程中。
    4. 在VS中有个叫做“属性管理器”的工具,用于进行VS整体参数的配置,配置一次之后,以后所有新建项目都能应用改配置,不用再一一进行配置操作,使用起来也非常方便。点击工具栏中的:View—>Other Windows—>Property Manger打开属性管理器。
    5. 我先假设配置的VS运行环境为 Debug | x64 ,VS上面很醒目的地方可以更改。选择给新项目添加属性配置表。(如果配置好后保存好文件,下一次新建项目就可以选择添加已存在的属性配置表了)。

    取个和项目相关的名字吧。然后双击刚刚新建的文件。

     

     

    1)配置包含目录:

            在通用属性(Common Properties)—>VC ++目录—>包含目录,然后点击右侧三角标志选中Edit进入编辑:

            向其中添加下面三个路径(你自己的OpenCv安装的位置):

            F:\opencv\build\include

            F:\opencv\build\include\opencv

            F:\opencv\build\include\opencv2

     

    2)配置库文件目录:

            完成上面的包含目录配置之后,我们还需要进行库文件的配置:回到属性界面,选择包含目录下面的Library Directories(库文件目录):

            向库文件目录下添加OpenCV的库文件目录:F:\opencv\build\x64\vc14\lib,这个目录根据每个人自己在第一步安装OpenCV中选择的目录进行选定:

    3)配置动态链接库:

            我们可以查看步骤2)中添加的库文件目录下面.lib文件列表,发现在3.1.0版本的OpenCV中,仅剩下两个库文件,分别是:opencv_world310.libopencv_world310d.lib,这里两个库文件的区别就是:opencv_world310.lib是Release模式版本,而opencv_world310d.lib是Debug模式版本:

            我们刚刚选的Debug模式版本,跟上述两个步骤相似,在属性界面中打开Linker(链接库)—>Input(输入)—>Additional Dependencies(添加依赖):

            将我们刚刚在OpenCV库文件目录下看到的两个库文件其中一个添加到这里:

     

    上面部分为新建工程时VS的Opencv的配置,配置好了之后可以引入头文件,使用OpenCv了。正常运行:


     

    VS OpenCv配置:

    首先是VS的OpenCv配置,外部库目录指定和外部包含文件的指定。

    1. 指定建立的工程为空白工程:
    2. 建立完工程之后,我们选中解决方案栏中的Resource Files目录(即源码目录),然后新建一个C++源码文件:
    3. 设置源码的文件名,例如:Main,然后创建此源码文件到工程中: 

     

    1. 在VS中有个叫做“属性管理器”的工具,用于进行VS整体参数的配置,配置一次之后,以后所有新建项目都能应用改配置,不用再一一进行配置操作,使用起来也非常方便。点击工具栏中的:View—>Other Windows—>Property Manger打开属性管理器:
    2. 在新出现的属性管理器栏中,展开目录,选中Debug|Win64中的Microsoft.Cpp.x64.user,并右键点击属性(Properties)进入属性界面: 

     

    1)配置包含目录:

            在通用属性(Common Properties)—>VC ++目录—>包含目录,然后点击右侧三角标志选中Edit进入编辑:

            向其中添加下面三个路径(你自己的OpenCv安装的位置):

            E:\OpenCV\opencv\build\include

            E:\OpenCV\opencv\build\include\opencv

            E:\OpenCV\opencv\build\include\opencv2

      

    2)配置库文件目录:

            完成上面的包含目录配置之后,我们还需要进行库文件的配置:回到属性界面,选择包含目录下面的Library Directories(库文件目录):

            向库文件目录下添加OpenCV的库文件目录:E:\OpenCV\opencv\build\x64\vc14\lib,这个目录根据每个人自己在第一步安装OpenCV中选择的目录进行选定:

    3)配置动态链接库:

            我们可以查看步骤2)中添加的库文件目录下面.lib文件列表,发现在3.1.0版本的OpenCV中,仅剩下两个库文件,分别是:opencv_world310.libopencv_world310d.lib,这里两个库文件的区别就是:opencv_world310.lib是Release模式版本,而opencv_world310d.lib是Debug模式版本:

            跟上述两个步骤相似,在属性界面中打开Linker(链接库)—>Input(输入)—>Additional Dependencies(添加依赖):

            将我们刚刚在OpenCV库文件目录下看到的两个库文件其中一个添加到这里(根据模式需求Release模式或Debug模式):

     

    上面部分为新建工程时VS的Opencv的配置,配置好了之后可以引入头文件,使用OpenCv了。


     

    OpenCv图像处理:

    (1).首先讲解OpenCv改变图像大小,这里以调用摄像头举例。

    #include<opencv2\core\core.hpp>
    #include<opencv2\highgui\highgui.hpp>
    #include<opencv2\opencv.hpp>
    
    using namespace cv;
    
    int main()
    {
    	// 从摄像头读入视频
    	VideoCapture capture(0);
    	while (1)
    	{
    		Mat frame;								//定义一个Mat变量,用于存储每一帧的图像
    		capture >> frame;						//读取当前帧    
    		resize(frame, frame, Size(360, 240));	//改变图像大小
    		imshow("aa", frame);
    		waitKey(30);							//延时30ms
    	}
    	return 0;
    }

    using namespace cv;引入OpenCv的命名空间。

    VideoCapture是一个摄像头类,可以读取摄像头或者本地的视频文件。

    Mat是OpenCv的矩阵类,一般用来存储图像。

    resize函数可以改变图像大小。

     

    (2).然后讲解OpenCv改变图像编码格式

    #include<opencv2\core\core.hpp>
    #include<opencv2\highgui\highgui.hpp>
    #include<opencv2\opencv.hpp>
    
    using namespace cv;
    
    int main()
    {
    	// 从摄像头读入视频
    	VideoCapture capture(0);
    	while (1)
    	{
    		Mat frame;									//定义一个Mat变量,用于存储每一帧的图像
    		capture >> frame;							//读取当前帧    
    
    		cvtColor(frame, frame, CV_BGR2GRAY);		//转为灰度图
    		imshow("aa", frame);
    		waitKey(30); //延时30ms
    	}
    	return 0;
    }

    首先需要注意的是OpenCv的图片是按BGR顺序存储的。

    早期的OpenCV开发者选择BGR颜色格式的原因在于主流的摄像头制造商和软件供应商都普遍使用这种格式,比如说Windows在用COLORREF描述颜色值的时候用的就是BGR格式: 0x00bbggrr

    cvtColor改变编码格式,常用的是COLOR_BGR2GRAY(CV_BGR2GRAY)

    还有接近人的直观感觉的COLOR_BGR2HSV(CV_BGR2HSV),颜色信息(H)、饱和度(S)、亮度(V)。

    转化后颜色改变,因为imshow命令里面接受的参数是BGR空间的矩阵,把HSV空间的矩阵给imshow,会把它解释为BGR空间的矩阵,显示出的效果就不是源图像了.

    HSV范围(根据实际情况改)

    这里给出一个获取HSV的代码。

    #include <opencv2\opencv.hpp>  
    #include "iostream"  
    
    using namespace std;
    using namespace cv;
    
    void on_mouse(int EVENT, int x, int y, int flags, void* userdata);
    
    int main(int argc, char** argv)
    {
    	Mat src, hsv;
    	//此处更改图片地址  
    	src = imread("C:\\Users\\ttp\\Pictures\\2.png");
    	namedWindow("display");
    	setMouseCallback("display", on_mouse, &src);
    	while (1)
    	{
    		imshow("display", src);
    		waitKey(40);
    	}
    }
    
    void on_mouse(int EVENT, int x, int y, int flags, void* userdata)
    {
    	Mat rgb, hsv;
    	rgb = *(Mat*)userdata;
    	Mat temp;
    	cvtColor(*(Mat*)userdata, hsv, CV_BGR2HSV);
    	Point p(x, y);
    	switch (EVENT)
    	{
    		case EVENT_LBUTTONDOWN:
    		{
    			printf("b=%d\t", rgb.at<Vec3b>(p)[0]);
    			printf("g=%d\t", rgb.at<Vec3b>(p)[1]);
    			printf("r=%d\n", rgb.at<Vec3b>(p)[2]);
    
    			printf("H=%d\t", hsv.at<Vec3b>(p)[0]);
    			printf("S=%d\t", hsv.at<Vec3b>(p)[1]);
    			printf("V=%d\n", hsv.at<Vec3b>(p)[2]);
    			circle(rgb, p, 2, Scalar(255), 3);
    		}
    		break;
    	}
    }

    setMouseCallback会捕获指定窗口的鼠标消息。

     

    (3).然后再讲解OpenCv图像的颜色识别

    #include <opencv2\core\core.hpp>
    #include <opencv2\highgui\highgui.hpp>
    #include <opencv2\opencv.hpp>
    
    using namespace cv;
    
    int alpha_slider1, alpha_slider2;
    void on_trackbar(int, void*) {}
    
    int main()
    {
    	VideoCapture capture(0);	// 从摄像头读入视频
    	namedWindow("[总]");
    	createTrackbar("Hmin", "[总]", &alpha_slider1, 180, on_trackbar);
    	createTrackbar("Hmax", "[总]", &alpha_slider2, 180, on_trackbar);
    	Mat frame; // 定义一个Mat变量,用于存储每一帧的图像
    	Mat HSV;
    	Mat mask; // 保存inRange后的值
    	while (1)
    	{
    		capture >> frame;  // 读取当前帧    
    		cvtColor(frame, HSV, COLOR_BGR2HSV);	// 转化为HSV					
    		inRange(HSV, Scalar(alpha_slider1, 43, 46), Scalar(alpha_slider2, 255, 255), mask);
    		imshow("保存", mask);
    		imshow("[总]", frame);
    		waitKey(30); // 延时30ms
    	}
    	return 0;
    }

    这个程序会创建一个滑动条来改变H的值,从而识别颜色

    createTrackbar会在指定窗口创建滑动条。

    函数原型(C++):

    void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)

    dst(I) = lowerb(I)0 ≤ src(I)0 < upperb(I)0 ∧ lowerb(I)1 ≤ src(I)1 < upperb(I)1 ∧lowerb(I)2 ≤ src(I)2 < upperb(I)2

    即,每个通道的像素值都必须在规定的阈值范围内!

    这篇文章先讲到这。

     

    展开全文
  • C++学习之OpenCV入门篇。

    万次阅读 多人点赞 2020-08-16 15:06:09
    前言:先说说OpenCv到底是个啥?以前只知道是一个开源的代码库,没有具体涉及。OpenCV全称Open Source Computer Vision Library即开源计算机视觉库,简称是OpenCV也是很奇葩了。开源的代名词就是强大,所以OpenCV的...

    前言:先说说OpenCv到底是个啥?以前只知道是一个开源的代码库,没有具体涉及。OpenCV全称Open Source Computer Vision Library即开源计算机视觉库,简称是OpenCV也是很奇葩了。开源的代名词就是强大,所以OpenCV的强大性是我没有预料的到的,并且可以在Linux、windows、Android、Mac OS上面。主要用来处理图像,充当机器的眼睛,极大推动了智能时代的发展。

    一、下载安装环境

    资源可以从官网下载,但是这个官网下载巨慢,翻墙下载较快。想省事的可以下载这个,https://pan.baidu.com/s/1EpwRfkO260OFfZoXIyAOIg 提取码:cd7d 。这个是CV14版本,对应visual studio2015,但是VS2017、VS2019也可使用,配置教程网上一抓一大把,不做赘述。

    二、举个栗子学习一下。

    图像转换、压缩、

    #include "stdafx.h"
    #include "opencv2/core.hpp"
    #include "opencv2/imgproc.hpp"
    #include "opencv2/highgui.hpp"
    #include "opencv2/videoio.hpp"
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
    	cout << "Built with OpenCV " << CV_VERSION << endl;
    	Mat image = imread("xinyuan.jpg");//见注1 
    	imshow("原始图像", image);//见注2
    	resize(image, image, Size(360, 202));//见注3
    	imwrite("D:\\xinyuan.jpg", image);//见注4
    	imshow("缩小图像", image);
    	cvtColor(image, image, CV_RGB2GRAY);//见注5
    	imshow("灰度图像", image);
    	waitKey(0);//见注6
    
    }
    
    

    输出结果:

    原始图像

    压缩图像

    灰度图像

    几点注释,大佬绕行。

    注1:imread函数,从指定路径下读取图片。imread函数读取的是图片的每个像素点的数值,得到一个数字矩阵,这个数字矩阵,就存放在Mat类型的所定义的变量image中。点进去就可以看到Mat是一个类。定义了多个构造函数。Mat具体使用方法请点击我的另外一篇博客(点击这里)。

    注2:imshow就是输出文件到屏幕,第一个参数为输出框的名字,第二个为待输出的图像。

    注3:resize函数是更改图片的大小,第一个参数是输入源数组,第二个是输出数组,第三个是更改大小的数值。resizet具体使用方法请点击我的另外一篇博客(点击这里)。

    注4:这是输出图片到特定的路径下,注意第一个参数的路径也要在双引号里面。具体使用方法请点击我的另外一篇博客(点击这里

    注5:cvtColor函数是图片类型转换函数,第三个参数CV_RGB2GRAY就是把RGB彩色数值转换为GRAY灰度黑白数值。

    注6:waitkey等待按键按下。参数为空和0均表示等待时间无限长,在等待时间内,有按键按下,退出显示。注意此处是对着HighGUI界面也就是imshow的显示界面才能起作用,对着命令框是不起作用的

     

    展开全文
  • 在Windows下配置C, C++编译OpenCV

    万次阅读 2017-08-25 00:47:32
    OPENCV原始语言是使用C和C++开发,支持PYTHON和java.。所以要想学好OPENCV,差不多要能读懂C和C++,最好有一些PYTHON知识,我发现PYTHON的示例和DEMO是仅次于C++的。在WIN下使用OPENCV,最好的工具可能是.net吧,
    OPENCV是一个很棒的机器学习和机器视觉的开源库,支持众多编程语言和操作系统平台,主要应用在人工智能和图像处理上,不再说费话了,直接重点。这里使用OPENCV是2.49,操作系统是WIN10,理论上3.2, 3.3使用同样的方法也是可以的,我这边使用3.2没有成功,可能是GCC和CMAKE不是最新吧,后面会使用新版本开发。

    OPENCV原始语言是使用C和C++开发,支持PYTHON和java.。所以要想学好OPENCV,差不多要能读懂C和C++,最好有一些PYTHON知识,因为我发现PYTHON的示例和DEMO是仅次于C++的,主要是资源质量也相当不错,写教程的人也多。

    在WIN下使用OPENCV,最好的工具可能是.net吧,看源码中有不少.net的配置文件,这样你将会节省很多配置时间。

    当然.net不是唯一选择,毕竟OPENCV支持很多种语言开发,.也支持各种平台,学习一门技术,最好能把他应用在工作中的各个方面,这时GCC+cmake是个很好的选择,这时你再配上一个自己喜欢的跨平台的编译器就完美了,我这里使用QT,eclipse应该也可以,不过感觉他对C语言不是特别友好,当然其他的ECMACS或者VIM。

    其实码源的编译并不是必须的。如果只是希望研究算法的应用,而不想去关心算法实现的过程,这时使用opencv发布的库文件就够了,可以免去编译。如果希望对他扩展,改进,裁剪,有跨平台,跨语言研究的更深入一些,需要根据平台和需要来编译源码。这里由于我需要要解决android和java方面的一些应用问题,而JAVA方面的库好像不是很齐全,而且JAVA样例代码也不是很全,有时常常需要深入了解C,C++和PYTHON代码,而在我看来能够运行的代码总是要比不能运行的代码阅读研究起来速度要快,而我由于电脑配置原因,无法安装十分庞大的.net工具,这时gcc ,CMAKE这些轻量级工具就很好使用,WIN平台需要加上mingw。

    GCC在WIN下编绎需要依赖mingw环境,而且编绎时的条件选项也需要选择mingw条件。cmake会把OPENCV的源码组织成mingw环境GCC支持的项目配置,GCC全终完成编绎,这两个文件缺一不可,如果你使用.net,就需要用cmake生成.net工程的配置文件。QT是个弱选项,你选择记事本也可以完成写代码工作,不过效率不高。


    1.首先是下载OPENCV,最新版本已经到了3.3,可能需要最新的工具才能编绎成功,如果选择这个版本,建议工具也升到最新,也可以下2.4X版本,目前国内的很多教程和代码资源都是这个版本,也可以多下几个版本研究,不同版本之间架构和API都有不小的变化,需要根据公司需要选择。

    最新版本,首页最下面就可以下载:

    http://opencv.org/

    要下载其他版本,可以在这里下载,选择winpack或者source,两个区别在于,后者只是源码,前者除了源码外还包括已经编绎好的支持各平台和语言的对应库文件。对不会编绎的或者懒于编绎的人有一定帮助,windpack是一个可以自解压的压缩包。找个解压位置解压就可安装。

    http://opencv.org/releases.html

    2.下载并安装CMAKE

    http://www.cmake.org/

    3.下载并安装mingw和gcc

    在MinGW官网中下载“mingw-get-setup.exe”
    官网传送门:http://www.mingw.org/

    mingw,安装完成后点击“continue”,打开MinGW Installation Manager。
    如图,在含有gcc字样的那行右键,选择”Mark for Installtion”
    并且,选择“Installtion”-> “Apply Changes”
    然后,点击“Apply”确认操作
    最后,在确定安装完成后点击“Close”关闭对话框

    如果没有网络,可以百度高线安装包安装

    安装完成后,把F:\Program Files\minGW\bin和F:\Program Files\minGW\msys\1.0\bin设置到环境变量

    4.可选。安装QT,这里有很多版本QT,可以选择最新的稳定版本

    下载地址https://download.qt.io/archive/qt/

    QT完成后要设置路径,加到WIN环境变量里,要不CMAKE创建配置文件时会出错

    make路径     D:\Qt\Qt5.4.2\Tools\mingw491_32\bin

    qmake路径   D:\Qt\Qt5.4.2\5.4\mingw491_32\bin


    5.使用CMAKE生成GCC和QT配置文件

    打开cmake的GUI版本cmake-gui.exe,选择路径;第一个为解压出来的OpenCV所在的路径,第二个是你指定的用于放置生生成的库的路径,也就是目标目录(我使用的是E:\opencv249\debug,下面图片是E:OpenCV2,抱歉,借别人的图,有些不准);

    点击configure,这时会弹出编译器选择界面,比如我们用的是qt是mingw的,则选择mingw,

    如果你是在VS下的,则可以选择VS类编译器。如下图:


    这时,会在目标目录下生产一些文件。cmake界面出来了一些可选项

    勾选QT和OPENGL,其他不用改,再次点击configure。



    点击Generate,这时会在目标目录下生成makefile文件。

    win+r输入cmd进入控制台

    1)进入makefile所在的目录 :

    cd xxx

    2)编绎源码

    mingw32-make  

    3)拷贝生成的库到install  目录

    mingw32-make install

    这时会在目标目录下生成一个install文件夹,库和bin和头文件都在里面:

    进入install目录下面,找到bin文件夹,将其路径加入系统环境变量


    至此,OPENCV编绎完毕,可以试验一下我们编的库是否可以正常使用,在opencv的E:\opencv249\opencv\sources\samples\cpp下任选一个文件使用GCC编绎

    cd进入E:\opencv249\opencv\sources\samples\cpp,执行g++

    g++ -o edge edge.cpp -IE:\opencv249\debug\install\include -L E:\opencv249\debug\install\x86\mingw\lib -llibopencv_core249 -llibopencv_highgui249 -llibopencv_imgproc249 -llibopencv_legacy249 -llibopencv_ml249
    edge.cpp是要编绎的C++文件,紧跟着是引用的头文件位置,接着是库文件位置,你OPENCV安装位置和库的位置可能和我不一样,需要修改后才能运行,成功运行,说明库是好了,可以使用这条命令试着编写自己的自己的OPENCV C++代码或者调试别人的

    6.如果需要一个好用的IDE,可以配置QT

    1打开先前安装好的QT,创建一个GUI工程。

    2打开.pro文件,加入以下配置,同样要改成自己的路径,注意路径中的斜杠

    INCLUDEPATH+=E:/opencv249/debug/install/include

    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_calib3d249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_contrib249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_core249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_features2d249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_flann249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_gpu249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_highgui249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_imgproc249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_legacy249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_ml249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_nonfree249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_objdetect249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_photo249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_stitching249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_superres249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_ts249.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_video249.dll.a
    LIBS += E:/opencv249/debug/install/x86/mingw/lib/libopencv_videostab249.dll.a

    然后在main.c加入一下代码,或者从opencv\sources\samples\cpp里复制一个文件过来编绎。
    高版本的工具编低版的OPENCV很容易成功,我就几乎没出现什么错误,一气呵成,低版本工具编高版本OPENCV可能会出错。

    参考:

    http://blog.csdn.net/guo8113/article/details/17799463

    http://blog.csdn.net/kaychangeek/article/details/52303949

    http://blog.sina.com.cn/s/blog_74a459380101oort.html

    http://www.cnblogs.com/findumars/p/6021602.html

    http://blog.csdn.net/qq_36731677/article/details/54608772



    展开全文
  • vs c++配置opencv(1)

    千次阅读 2018-03-06 16:07:50
    1.vc++配置opencv2.简单常用的图片处理函数3.图像修复函数 环境:vs2013opencv2.4.13 准备工作:1.安装opencvopencv各版本间存在API差异,opencv提供相应版本的vc文件,在其安装目录 ..opencv\build\x86 目录下...

    1.vc++配置opencv

    2.简单常用的图片处理函数

    3.图像修复函数

     

    环境:

    vs2013

    opencv2.4.13 

    准备工作:

    1.安装opencv。

    opencv各版本间存在API差异,opencv提供相应版本的vc文件,在其安装目录 ..opencv\build\x86 目录下,个人觉得引用与当前使用vs版本最接近的目录文件就可以。opencv安装目录下的引用lib及bin文件 提供x86和x64

    2.配置环境变量。

    首先在 我的电脑 右键 属性,在系统属性中 选择高级,打开设置环境变量的界面。其中 上半部分为用户变量,下半部分为系统变量。

    (1)在用户变量中添加PATH变量,值为:安装目录\opencv\build\x86\vc12\bin;安装目录\opencv\build\x64\vc12\bin

    (2)在用户变量中添加OPENCV,值为:安装目录\opencv\build

    过程中变量如果存在,将值添加至末尾,以;间隔

     

    配置好了环境变量,接下来配置的是vc++的工程项目了,用来在vc++中使用opencv。

    打开vs,新建项目,选择vc++,32位控制台应用程序,工程命名为opencvTest。

     

    在项目工程上右键,属性,打开属性页面。

    属性中选择配置信息,配置中配置选项选择为Debug。点击左侧导航中的 vc++目录。编辑其中的包含目录和库目录。

    注:此处为单独的项目配置信息,如果想将此配置导出属性文件供各个项目使用,选择vs中的视图-》其他窗口-》属性管理器 

    在属性管理器项目上右键 =》添加新项目属性表,为属性表命名并存放于公共目录下,以方便后面的项目引用,在属性管理器中双击新建的属性其具体配置和下面的一样。配置好属性表之后,下次使用就可以在属性管理器中 右键=》添加现有属性表,找到属性文件,添加即可使用。此处以单独项目的配置信息为例:

    其中,包含目录中引入的路径是 opencv安装路径\opencv\build\include 及其子项。库目录是其lib文件的所在目录,这里把x86和x64的都引入进来了。如出现“error C1083: 无法打开包括文件:“opencv2/core/core_c.h”: No such file or directory”类错误 说明包含目录中的引用出现问题,可能是路径错了,调整引用路径就ok。

    这个地方要注意的是,根据当前项目的实际情况选择相应版本的lib目录,本次设置将两个版本的lib文件全部引用了,但实际项目中系统如果发现有两个一样的引用,会默认使用第一个版本,所以如果为32位的应用程序,则x86的放在首位,如果为64位应用程序x64放在首位。如出现错误“ 无法解析的外部符号_XXXXX,该符号在函数_main 中被引用”则是此处位置的问题,调整位置后就ok了。

    之后设置连接器的输入项,设置其附加依赖项,此处为opencv的引用lib文件名称。opencv3.4.13附加依赖项

     

    点击应用并确定。至此,opencv在vs中的配置完成,下面我们开始测试在vc++中调用opencv函数完成图片操作。

    (1)在项目源文件目录下,点击opencvTest.cpp,修改其代码为:

    复制代码
    // opencvTest.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "cv.h"
    #include "highgui.h"
    
    using namespace std;
    
    int main()
    {
        IplImage* test;
        test = cvLoadImage("图片路径", 1);
        cvNamedWindow("opencv_demo", 1);
        cvShowImage("opencv_demo", test);
        cvWaitKey(0);
        cvDestroyWindow("opencv_demo");
    }
    复制代码

    此处需要注意的是:

    #include "stdafx.h" 需放在文件的第一行,否则会得到跳过引用的警告错误,和找不到相关引用方法的错误。 

    运行项目,执行结果为打开了在项目中引用路径的图片文件。

     

     

    运行期间 遇到“无法启动此程序,因为计算机中丢失xxx.dll”文件问题,解决方法:项目=》c\c++=》预处理器  ,在预处理器定义中添加_CRT_SECURE_NO_WARNINGS,然后重新启动vs,完成修改。

     

    展开全文
  • 七.opencv(七):Mat_类 Mat_类是对 Mat 类的一个包装,其定义如下: template&lt;typename _Tp&gt;  class Mat_ : public Mat  { public:  //只定义了几个方法  //没有定义新的属性  };  ...
  • OpenCV(C++) - 读/写/合成图像

    万次阅读 2019-05-31 10:15:14
    1.头文件&...opencv2/opencv.hpp> #include<opencv2/core/core.hpp> // 核心组件 #include<opencv2/highgui/highgui.hpp> // GUI #include<opencv2/imgproc/imgproc.hpp>...
  • OpenCV C++环境搭建

    万次阅读 2019-04-12 16:23:17
    OpenCV下载地址 下载windows安装包比如opencv-3.4.5-vc14_vc15.exe,解压到C盘(建议) 添加系统环境变量 Path: C:\opencv\build C:\opencv\build\x64\vc14\bin 新建OpenCV工程 test.cpp #include <iostream>...
  • c++ openCV基础使用

    千次阅读 2019-08-01 20:55:56
    OpenCV – 2.4.13.6 vs2017 win7 打开摄像头 #include <iostream> #include<opencv2/opencv.hpp> using namespace cv; using namespace std; int main(){ //VideoCapture capture("img.png");//打开...
  • C++ OpenCV显示一张图像

    千次阅读 2018-01-22 18:12:34
    代码编译后运行画面如下: 上面步骤 用 VS2017即可通过,使用VS...opencv_world320d.lib 我使用软件:OpenCV3.2.0+VS2017 OpenCV官方地址: http://opencv.org/releases.html# FR:徐海涛(hunk xu)
  • c++ opencv保存图片

    千次阅读 2019-01-13 19:07:01
    本人在做人脸采集的时候遇到了要用c++ opencv保存图片的问题,下面是方法,代码是抠出来的,由于是项目所以全部代码就不放出来了 直接使用c++ opencv的接口函数使用方法。 cv::imwrite(path_filename,picture) ...
  • C/C++ OpenCV读取视频与调用摄像头

    万次阅读 多人点赞 2017-01-07 14:08:34
    C/C++ OpenCV读取视频与调用摄像头
  • 为Dev-C++安装设置OpenCV

    万次阅读 2006-10-14 17:00:00
    假设OpenCV已经默认安装在C:/Program Files/OpenCV/ 文件夹下。步骤:1 文件更名。转到C:/Program Files/OpenCV/bin/ 目录下,可以看到有几个文件名中包含097的.dll文件,复制这些文件,把名字中的097更改为096。...
  • 图解Dev-C++下的OpenCV环境配置

    千次阅读 2006-12-26 14:50:00
    Key Words: OpenCV , Dev-COpenCV的开发很多是由Visual C的编译器编译的。除此之外有没有别的选择呢?显然是有的,比如命令行下的...最近在网上看见了关于Dev-C++中配置OpenCV的文章,但是觉得过于复杂了。
  • C++ opencv 读取mp4文件

    万次阅读 2016-05-21 16:43:16
    1.第一步:安装Xvid ...#include "./opencv2.4.10/core.hpp" #include "./opencv2.4.10/highgui.hpp" #include "./opencv2.4.10/imgproc_c.h" #include "./opencv2.4.10/mat.hpp" using namespace s
  • 在Dev-C++上搭建OpenCV 开发环境

    万次阅读 2018-05-31 09:32:40
    1 安装 CMake 和 Python (2.x或3.x)登录官网(https://cmake.org/download/)下载 CMake,目前我的PC是64位windows 7系统2 下载 OpenCV 安装文件(opencv-3.3.0-vc14.exe)该文件只是将OpenCV source以及编译生成的...
  • Dev-C++配置OpenCV-2.4.4环境

    千次阅读 2013-07-04 23:12:45
    已经安装的有:Dev-C++ 5.4.1,OpenCV-2.4.4,MinGW32 在Dev-C++中打开Tools->Compiler Options,在Compiler set to configure中新建一个OpenCV的新配置,配置如下(我的OpenCV安装在D:\OpenCV-2.4.4\): 使用...
  • C++版本实现   #include &lt;opencv2/opencv.hpp&gt; #include &lt;opencv2/highgui/highgui.hpp&gt; #include &lt;opencv2/core/core.hpp&gt; #include &lt;iostream&gt; ...
  • opencv3/C++视频读取、视频写入

    万次阅读 2017-12-21 16:23:33
    视频读取视频读取,主要利用VideoCapture类下的方法打开视频并获取视频中的帧,...#include<opencv2/opencv.hpp> using namespace cv;int main() { VideoCapture capture; Mat frame; frame= capture.open("E:/im
  • 树莓派使用Opencv库的C++操作

    万次阅读 热门讨论 2019-03-14 18:25:43
    手头上有一个树莓派3,先前装好了树莓派jessie系统,经过一番周折又安装上了Opencv3.1,刚好最近在学Opencv,打算把自己的USB摄像头用在树莓派上试试,先打通这条道路,后面就可以继续干了。 首先将USB摄像头插在...
  • OpenCV人脸检测(C++代码)

    万次阅读 2015-03-05 14:24:05
    OpenCV人脸检测(C++代码)—— By wepon这篇文章简单总结一下人脸检测的代码实现,基于OpenCVC++版本。之所以强调C++版本是因为OpenCV有很多其他语言的接口,之前我也写过人脸检测的Python实现《Python-OpenCV...
1 2 3 4 5 ... 20
收藏数 60,796
精华内容 24,318
关键字:

c++ opencv