• 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

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

    这篇文章先讲到这。

     

    展开全文
  • OpenCV图像处理编程实例》例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 初识OpenCV 1.VS2015安装OpenCV2.4.11 四步骤: 1)步骤一:下载Windows安装包OpenCV...
  • OpenCV图像处理编程实例》以OpenCV开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的...
  • OpenCV图像处理编程实例》以OpenCV开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的...
  • OpenCV图像处理编程实例》-源码,最新更新20160801,支持OpenCV3.1+VS2015,修改若干程序中错误,如遇问题欢迎反馈到zhu1988wei@163.com
  • OpenCV图像处理编程实例》以OpenCV开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的...
  • 高清版的《opencv图像处理编程实例》,作者:朱伟,开发环境vs2015+opencv3.1,里面有详细的安装教程
  • 详细描述了OpenCV图像处理编程案例,代码及书籍。工程可以运行。
  • 说明:1、 OpenCV图像处理编程实例所有代码已更新支持版本 OpenCV3.1.0+vs2015;2、修复了若干cpp中的错误及BUG;3、如若对代码存有疑问或发现其中的错误,敬请批评指正,谢谢,联系邮箱:zw301289@163.com;4、为...
  • OpenCV图像处理编程实例-朱伟等编著-PDF电子版-附书中源码
  • OpenCV图像处理编程实例》(朱伟著)+源代码;《OpenCV图像处理编程实例》(朱伟著)+源代码
  • OpenCV图像处理编程实例-朱伟等编著-PDF电子版,来源于
  • OpenCV图像处理编程实例
  • 本书以 OpenCV 开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术, 对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的代码
  • 适合初学者阅读的——OpenCV图像处理编程实例+源代码!
  • OpenCV图像处理编程实例》,电子工业出版社,2016.05
  • opencv图像处理编程实例 2020-03-12 16:37:24
    资源名称:opencv图像处理编程实例资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • OpenCV图像处理编程实例及源码,包含界面制作及代码编写,让你真正的学习opencv\
  • 网上很多此文档都是看起来很亮,字体颜色太浅,看起来不舒服 现在发的这个进行了字体加强,颜色的加深,
  • 运行环境: VS2015 + OpenCV3.1.0 需重新编译opencv_contrib,编译流程见本书附录2——CMake 编译 OpenCV3.1 源码; OpenCV图像处理编程实例-源码
1 2 3 4 5 ... 20
收藏数 13,968
精华内容 5,587