【机器学习】C++与OpenCV实战:创建你的第一个图片显示程序

news2024/9/20 16:29:08

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

前言

在计算机视觉领域,OpenCV是一个非常强大的开源库,它提供了大量的图像处理和计算机视觉功能。C++与OpenCV的结合可以让你开发出高性能的图像处理程序。本文将带你一步步使用C++和OpenCV库来创建一个简单的图片显示程序,让你体验OpenCV的强大功能。

在这里插入图片描述

文章目录

  • 前言
  • 一、准备工作
    • 1.1 OpenCV的安装与配置
    • 1.2 OpenCV在Windows系统下的安装
    • 1.3 OpenCV在Linux系统下的安装
    • 1.4 OpenCV在Mac OS系统下的安装
    • 1.5 配置Python环境使用OpenCV
  • 二、创建项目
    • 2.1 创建项目文件夹
    • 2.2 编写源代码
    • 2.3 编译项目
  • 三、运行程序
  • 四、总结

一、准备工作

在开始之前,你需要确保已经安装了C++编译器和OpenCV库。以下是在Windows和Linux系统上安装OpenCV的一般步骤:

  • Windows:
    • 下载OpenCV的预编译库或者源代码。
    • 将OpenCV库文件添加到系统的PATH环境变量中。
    • 配置Visual Studio或MinGW等编译器以包含OpenCV的库文件和头文件。
  • Linux:
    • 使用包管理器安装OpenCV(例如,在Ubuntu上使用sudo apt-get install opencv-python)。
    • 如果你需要从源代码编译,可以克隆OpenCV的GitHub仓库并按照编译指南进行编译。

在这里插入图片描述

1.1 OpenCV的安装与配置

OpenCV的安装方式根据不同的操作系统和使用环境有所不同。以下我们将分别介绍在Windows、Linux和Mac OS下的安装方式,以及如何配置Python环境使用OpenCV。

1.2 OpenCV在Windows系统下的安装

在Windows系统下,推荐使用Python的包管理工具pip来安装OpenCV。你可以在命令行中运行以下命令来安装:

pip install opencv-python

如果你需要使用到OpenCV的额外模块(如xfeatures2d等),可以安装opencv-contrib-python包:

pip install opencv-contrib-python

1.3 OpenCV在Linux系统下的安装

在Linux系统下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:

pip install opencv-python

同样,如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:

pip install opencv-contrib-python

1.4 OpenCV在Mac OS系统下的安装

在Mac OS下,我们同样可以使用pip来安装OpenCV。打开终端,运行以下命令:

pip install opencv-python

如果你需要使用到OpenCV的额外模块,可以安装opencv-contrib-python包:

pip install opencv-contrib-python

1.5 配置Python环境使用OpenCV

安装完成OpenCV后,我们可以在Python环境中导入cv2模块来使用OpenCV的功能。你可以创建一个新的Python脚本,然后在其中输入以下代码来测试OpenCV是否安装成功:

import cv2

# 打印OpenCV版本
print(cv2.__version__)

如果输出了你所安装的OpenCV版本号,那么恭喜你,你已经成功安装并配置好了OpenCV!

总的来说,无论是在Windows、Linux还是Mac OS系统下,安装和使用OpenCV都是相对简单的。只需要几个简单的命令,就可以开始你的OpenCV之旅了。

二、创建项目

2.1 创建项目文件夹

  1. 创建新文件夹:为你的项目创建一个新的文件夹,并在其中创建一个新的C++源文件(例如,main.cpp)。

2.2 编写源代码

  1. 编写源代码:打开main.cpp并添加以下代码:
#include <opencv2/opencv.hpp> // 包含OpenCV库的头文件
int main() {
    // 加载图片
    cv::Mat image = cv::imread("path_to_your_image.jpg"); // 替换为你的图片路径
    // 检查图片是否成功加载
    if (image.empty()) {
        std::cerr << "Error: Image not found." << std::endl;
        return -1;
    }
    // 创建窗口
    cv::namedWindow("Display window", cv::WINDOW_AUTOSIZE);
    // 显示图片
    cv::imshow("Display window", image);
    // 等待用户按键,然后关闭窗口
    cv::waitKey(0);
    return 0;
}

2.3 编译项目

  1. 编译项目:使用C++编译器编译你的程序。以下是一个使用g++编译器的示例命令:
g++ -std=c++11 main.cpp -o display_image -lopencv_core -lopencv_imgcodecs -lopencv_highgui

确保替换main.cpp为你源文件的正确路径,并且-lopencv_*标志对应于你安装的OpenCV版本和组件。

三、运行程序

编译成功后,你将得到一个可执行文件(例如,display_image)。运行这个程序,你应该会看到一个窗口显示你指定的图片。

./display_image

四、总结

本文通过一个简单的示例,向你展示了如何使用C++和OpenCV来加载和显示图片。这是OpenCV基础中的基础,但也是进一步学习图像处理和计算机视觉功能的重要起点。掌握了这个基础,你就可以继续探索OpenCV提供的更多高级功能,如图像滤波、边缘检测、对象识别等。祝你学习愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这次我可真没手写代码

我是一个平平无奇的程序员&#xff0c;兢兢业业地做着公司的需求&#xff0c;直到那天&#xff0c;一位十年见过两面的亲戚突然找上门&#xff0c;他说&#xff1a; 小Z啊&#xff0c;听说你是学计算机的对吧。 听完这话&#xff0c;我当场汗流浃背&#xff0c;这不是让我上门修…

Web组件:Servlet Listener Filter

1 前言 1.1 内容概要 掌握ServletContextListener的使用&#xff0c;并且理解其执行时机掌握Filter的使用&#xff0c;并且理解其执行时机能够使用Filter解决一些实际的问题 1.2 前置知识准备 Servlet的执行 ServletContext的功能和使用 2 Web组件 JavaEE的三大Web组件 …

Aigtek功率放大器在超声检测陶瓷复合材料内部缺陷中的应用

2023年5月30日&#xff0c;神舟十六号载人飞船于9时28分左右在酒泉基地正式发射。本次神舟十六号最引人注目的一点就是它的元件国产率相较之前是大大提高了。选择提高自主研发能力&#xff0c;一方面是防范他国在技术、贸易上的“卡脖子”隐患&#xff0c;一方面也是我国制造实…

【智慧物流】新中地智慧城市实训:优秀学生项目作品1

实训结束后&#xff0c;同学们在最后的答辩中纷纷展现了自己的优秀成果&#xff0c;并以小组的形势进行汇报。今天截取部分学生优秀作品给大家进行展示&#xff0c;帮助大家快速了解智慧系列项目的效果。 智慧城市开发项目主题&#xff1a;智慧物流 &#xff08;为保护学生隐…

亲测好用,ChatGPT 3.5/4.0新手使用手册,最好论文指令手册~ 【2024年9月 更新】

本以为遥遥领先的GPT早就普及了&#xff0c;但小伙伴寻找使用的热度一直高居不下&#xff0c;其实现在很简单了&#xff01; 国产大模型快200家了&#xff0c;还有很多成熟的国内AI产品&#xff0c;跟官网一样使用&#xff0c;还更加好用~ ① 3.5 大多数场景是够用的&#xff…

热门运动耳机品牌有哪些?精选五款骨传导耳机运动好物分享

随着人们对于听力和健康问题的重视&#xff0c;不管是日常、运动还是游泳骨传导耳机逐渐成为了更健康、便捷的听音方式。因为行业的爆火&#xff0c;骨传导耳机市场的竞争也是非常激烈&#xff0c;有很多没有专业技术沉淀的品牌也来做骨传导耳机想吃这波红利&#xff0c;很容易…

SysML图例-混合动力SUV

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>

swagger-bootstrap-ui页面空白,也没报错

回想起来&#xff0c;代码层面没有进行什么大的调整&#xff0c;增加了配置文件&#xff0c;application.yml中的 spring:profiles:active: sms # dev --> smsname: sms-server swagger配置未调整导致空白 修改profile 问题解决

.htaccess防火墙,Nginx防火墙,Apache防火墙,WEB防火墙,网站防火墙

.htaccess防火墙&#xff0c;Nginx防火墙&#xff0c;Apache防火墙&#xff0c;WEB防火墙&#xff0c;网站防火墙 对此域的请求通过 Apache 处理。 在 nginxdev.com 测试 Nginx 服务器上的防火墙 防火墙代码&#xff1a; # 资源宝分享&#xff1a;www.httple.net # 8G FIREWA…

当你忘记很久前的 DJANGO + UWSGI 项目是怎么启动的

在后端项目代码推到云服务器后&#xff0c;通常需要手动重启相关服务才会更新生效。 本人生产环境中用的是UWSGI服务器&#xff0c;更新步骤如下&#xff1a; 文章目录 UWSGI服务启动方式SYSTEMCTL 命令查看查看当前运行的 UWSGI 进程其他&#xff1a;查看 UWSGI 日志文件 重启…

基于Vue框架的娱爆新闻网站的设计与实现---附源码80930

目 录 摘要 1 绪论 1.1研究背景与意义 1.2国内外研究现状 1.3研究内容 1.4论文结构与章节安排 2 娱爆新闻网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功…

Redis面试必问:Redis为什么快?Redis五大基本数据类型

请记住胡广一句话&#xff0c;所有的中间件所有的框架都是建立在基础之上&#xff0c;数据结构&#xff0c;计算机网络&#xff0c;计算机原理大伙一定得看透&#xff01;&#xff01;~ 1. Redis快的秘密 相信大部分Redis初学者都会忽略掉一个重要的知识点&#xff0c;Redis…

计算机网络 ---如何寻找目标计算机

序言 在没有产生网络之前&#xff0c;单个主机就像汪洋大海之间的一个孤岛&#xff0c;和其他主机之间没有任何联系。但随着需求的产生&#xff0c;免不了两台主机之间需要产生交流&#xff08;传送数据等&#xff09;。离得近的两台主机之间搭一根网线就能够解决&#xff0c;但…

147.最小栈

题目 链接&#xff1a;leetcode链接 思路 这道题目做起来还是比较简单的&#xff0c;使用两个栈就可以实现题目要求。 其中一个栈s实现栈的基本功能&#xff0c;另一个栈mins实现检索最小元素的功能。 来看一下怎么样实现检索最小元素的功能呢&#xff1f; 我们可以这么…

VTK-vtkBandedPolyDataContourFilter学习

官网有一个例子&#xff0c;看完之后仍然不太明白。经过一点点的探索&#xff0c;记录一下收获。 1.建立一个六边形的点集 Create(vtkPoints, points);points->InsertNextPoint(-5, 0, 0);points->InsertNextPoint(-2.5, -4.33, 0);points->InsertNextPoint(2.5, -4.…

网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3

一、环境 XSS Game - Learning XSS Made Simple! | Created by PwnFunction 二、开始介绍 如果notify为真的话那么html是 <div class"alert alert-warning" role"alert"><b>Meme</b> created from ${DOMPurify.sanitize(text)}</d…

DevOps实现CI/CD实战(七)- Jenkins集成k8s实现自动化CI

自动化CI操作 1. 安装gitlab plugin 工具 ##### 2. 配置流水线任务的构建触发器&#xff0c;复制URL&#xff1a;http://192.168.201.111:8080/project/pipeline 3. Gitlab配置Webhooks&#xff0c;将上面的url&#xff1a;http://192.168.201.111:8080/project/pipeline粘…

基于微信小程序+Java+SpringBoot+Vue+MySQL的网上花店/鲜花销售小程序

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的网上花店/鲜花销售…

AI绘画stable diffussion :Lora大模型微调的利器

前言 LoRA模型是小型的Stable Diffusion模型&#xff0c;它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小&#xff0c;效果好&#xff0c;所以lora模型的使用程度比较高。 这是一篇面向从未使用过LoRA模型的初学者的教程。你将了…

使用tesseract.js插件实现前端js识别提取图片的文字

<!DOCTYPE html> <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图像OCR Tesseract.js 测试…