详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0

详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0的完整攻略

本文章将详细讲解如何在VS2019中安装配置OpenCV-4-1-0以及OpenCV-contrib-4-1-0库,以及如何使用这两个库。

安装配置OpenCV-4-1-0和OpenCV-contrib-4-1-0

下载OpenCV-4-1-0和OpenCV-contrib-4-1-0

可以在OpenCV的官方网站上下载两个库的最新版本压缩包,下载链接: https://opencv.org/releases/

安装Visual Studio 2019

下载并安装Visual Studio 2019(Community, Professional或Enterprise皆可),记得勾选C++相关组件。

安装CMake

下载并安装CMake:https://cmake.org/download/

解压缩OpenCV-4-1-0和OpenCV-contrib-4-1-0

使用压缩软件解压下载的OpenCV-4-1-0和OpenCV-contrib-4-1-0的压缩包。

用CMake生成Visual Studio工程文件

选择解压缩后的OpenCV-4-1-0的文件夹作为source code地址,新建一个build文件夹作为编译结果的文件夹,使用CMake生成Visual Studio工程文件。在CMake-GUI界面中可以设置输入和输出地址。同时在编译选项中勾选OpenCV的contrib模块,这样就可以编译生成带有OpenCV-contrib-4-1-0的库了。

编译并设置环境变量

用Visual Studio打开刚刚生成的工程文件,选择"Release"模式进行编译,成功编译出OpenCV库文件后,需要设置环境变量。打开计算机属性 - 高级系统设置 - 环境变量,找到系统变量的Path,添加OpenCV.dll所在的文件夹路径。这样,就可以在VS中使用OpenCV了。

使用OpenCV-4-1-0和OpenCV-contrib-4-1-0

示例一

以下是一个简单的OpenCV程序,用于打开并显示一张图片。


#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    cv::Mat img = cv::imread("test.jpg");
    cv::imshow("test", img);
    cv::waitKey(0);

    return 0;
}

以上代码使用了OpenCV的imread函数读取图片,imshow函数显示图片,waitKey函数等待程序接收到键盘事件,这样就可以看到图片窗口一直保持打开状态,直到按下键盘上任意键。

示例二

以下是一个使用OpenCV-contrib-4-1-0里的saliency模块程序,用于自动选取一张图片中最显著的区域。


#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/saliency.hpp>

int main(int argc, char** argv)
{
    cv::Mat image = cv::imread("test2.jpg");
    cv::Ptr<cv::saliency::StaticSaliency> saliency_algorithm = cv::saliency::StaticSaliencySpectralResidual::create();

    cv::Mat binary_map;
    saliency_algorithm->computeSaliency(image, binary_map);

    cv::imshow("input", image);
    cv::imshow("binaryMap", binary_map);
    cv::waitKey();

    return 0;
}

以上代码使用了OpenCV-contrib-4-1-0里saliency模块的StaticSaliencySpectralResidual类函数,对输入的图像进行显著性检测,最终输出检测结果二值化图像。通过修改test2.jpg图片,在图片中加入显著区域,可以看到输出结果的显著区域更亮,表示是检测到了显著性区域。

总结

本文详细介绍了如何在VS2019中安装OpenCV-4-1-0和OpenCV-contrib-4-1-0库,并介绍了OpenCV常用函数的使用方法,同时还提供了两个示例程序作为参考。希望本文可以帮助读者更深入地了解OpenCV,对使用OpenCV的开发者具有指导意义。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Nginx+Keepalived实现双机主备的方法

    Nginx+Keepalived实现双机主备的方法攻略 1. 什么是Nginx和Keepalived Nginx是一种高性能的Web服务器和反向代理服务器,可以解决高并发问题,由于其占用资源较少、配置简单、易于扩展等特点,在Web服务器和反向代理服务器领域有很大的应用前景。 Keepalived是一个实现高可用性和负载均衡的工具,通过对Nginx进程的状态监…

    人工智能概览 2023年5月25日
    00
  • 使用Nginx实现负载均衡的策略

    下面我将详细讲解如何使用Nginx实现负载均衡的策略。 什么是负载均衡 负载均衡是一种通过将工作负载分配到多个计算机资源上,以使每个计算机资源的负载保持在可接受的水平,从而提高系统的可用性、可扩展性和可靠性的技术。常用的负载均衡策略有轮询、IP hash、加权轮询、加权 IP hash、least_conn等等。 使用Nginx实现负载均衡的步骤 安装Ngi…

    人工智能概览 2023年5月25日
    00
  • Nginx负载均衡详细介绍

    Nginx是一款轻量级的高性能Web服务器和反向代理服务器,它被广泛应用于高并发的Web应用领域。Nginx具有负载均衡的特性,可以将客户端请求平均分配到多个Web服务器,从而提高系统的并发处理能力和稳定性。本文将介绍Nginx负载均衡的使用方法和常见配置方案。 负载均衡方法 Nginx支持多种负载均衡方法,包括轮询、IP Hash、最小连接数、URL Ha…

    人工智能概览 2023年5月25日
    00
  • Django之模板层的实现代码

    下面是“Django之模板层的实现代码”的完整攻略。 什么是Django模板层? Django的模板层是将用户数据和视图层之间的交互进行分离的一种方式。通过Django模板层,我们可以将页面渲染的代码分离到一个单独的文件中,从而减少代码混杂和代码冗余的问题,提高了代码的可维护性和可读性。 Django模板层如何实现 Django的模板层是由一些Python类…

    人工智能概论 2023年5月25日
    00
  • JAVA后端应该学什么技术

    当我们谈到JAVA后端技术时,我们通常会特指用于创建后端应用程序的框架、库和技术。下面是JAVA后端应该学习的一些最重要的技术: 1. Spring框架 Spring框架是后端领域最流行的框架之一。Spring框架为JAVA应用程序提供了一种以模块化方式创建高效应用程序的方法。通过使用Spring框架,你可以更快地构建一个完整的应用程序,包括数据访问、模板引…

    人工智能概览 2023年5月25日
    00
  • nginx配置SSL证书实现https服务的方法

    下面是关于Nginx配置SSL证书实现HTTPS服务的方法的完整攻略: 1. 生成SSL证书 首先需要生成SSL证书,可以通过以下命令生成: sudo apt-get update sudo apt-get install openssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -ke…

    人工智能概览 2023年5月25日
    00
  • SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

    下面是关于“SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码”的完整攻略。 1. 简述Spring Cloud Config Spring Cloud Config是一种分布式系统中的外部化配置组件,它支持客户端和服务器之间的各种协议(HTTP、SSH、基于本地磁盘等)来管理和存储服务配置信息。使用Spring …

    人工智能概览 2023年5月25日
    00
  • 浅谈keras中Dropout在预测过程中是否仍要起作用

    浅谈keras中Dropout在预测过程中是否仍要起作用 Dropout介绍 在深度学习中,为了防止模型出现过拟合现象,我们通常会采用Dropout技术,其本质是“随机失去神经元连接”,即在训练过程中以一定的概率随机使一些神经元失效,这可以强制让每个神经元都不能太依赖其它神经元。 注意:Dropout只在模型训练时才会被应用,而在预测时,则不需要再进行随机失…

    人工智能概论 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部