OpenCV [c++](图像处理基础示例小程序汇总)

OpenCV [c++](图像处理基础示例小程序汇总)

推荐 原创

NCUTer 2023-04-04 14:18:49

文章标签 Image 图像处理 文章分类 计算机视觉 人工智能 在51CTO的第一篇博文 阅读数1467

一、图像读取与显示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main()
{string path = "Resources/lambo.png";//图片的路径名Mat img = imread(path);//将图片加载后赋值到图像变量img中//if (path.empty()) { cout << "file not loaded" << endl; }//检查文件是否打开 没打开时执行打印语句//namedWindow("Image", WINDOW_FREERATIO);//创建一个名为Image的可调节的窗口imshow("Image", img);//创建一个窗口来显示图像imgwaitKey(0);//不断刷新图像return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • waitKey()函数的功能是不断刷新图像,频率为delay,单位是ms。
  • delay为0时,则会一直显示这一帧。
  • delay不为0时,则在显示完一帧图像后程序等待“delay"ms再显示下一帧图像。

二、图像预处理[高斯滤波、canny边缘检测、膨胀腐蚀]

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;void main() {string path = "Resources/test.png";Mat img = imread(path);Mat imgGray,imgBlur,imgCanny,imgDil,imgErode;//将照片转换为灰度cvtColor(img, imgGray, COLOR_BGR2GRAY);//高斯模糊GaussianBlur(imgGray, imgBlur, Size(3, 3), 3, 0);//Canny边缘检测器  一般在使用Canny边缘检测器之前会做一些模糊处理Canny(imgBlur, imgCanny, 25, 75);//创建一个可以使用膨胀的内核Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));//图像膨胀dilate(imgCanny, imgDil, kernel);//图像侵蚀erode(imgDil, imgErode, kernel);//结果呈现imshow("Image", img);imshow("Image Gray", imgGray);imshow("Image Blur", imgBlur);imshow("Image Canny", imgCanny);imshow("Image Dilation", imgDil);imshow("Image Erode", imgErode);waitKey(0);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

OpenCV [c++](图像处理基础示例小程序汇总)_图像处理

Canny 边缘检测

Canny(imgBlur, imgCanny, 25, 75);
  • 1.

第3和第4个参数分别代表底阈值和高阈值,其中底阈值常取高阈值的1/2或1/3

OpenCV [c++](图像处理基础示例小程序汇总)_Image_02

三、图像裁剪

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;void main() {string path = "Resources/test.png";Mat img = imread(path);Mat imgResize,imgCrop;//调整图像大小//cout << img.size() << endl;//查看原图像的大小//resize(img, imgResize, Size(640, 480));//按自定义的宽度与高度缩放resize(img, imgResize, Size(),0.5,0.5);//按比例缩放//图像裁剪Rect roi(200, 100, 300, 300);//前面两个参数为距左上原点的x方向与y方向的距离,后两个参数为延伸的x,y长度imgCrop = img(roi);imshow("Image", img);imshow("Image Resize", imgResize);imshow("Image Crop", imgCrop);waitKey(0);}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

void cv::resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation = INTER_LINEAR)

调整图像的大小。函数 resize 将图像 src 的大小缩小到或最大到指定的大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 src、dsize、fx 和 fy 派生的。

OpenCV [c++](图像处理基础示例小程序汇总)_Image_03

四、绘制形状和添加文本

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{//Blank ImageMat img(512, 512, CV_8UC3, Scalar(255, 255, 255));circle(img, Point(256, 256), 155, Scalar(0, 69, 255), FILLED);rectangle(img, Point(130, 226), Point(382, 286), Scalar(255, 255, 255), -1);line(img, Point(130, 296), Point(382, 296), Scalar(255, 255, 255), 2);putText(img, "Murtaza's Workshop", Point(137, 262), FONT_HERSHEY_DUPLEX, 0.95, Scalar(0, 69, 255), 2);imshow("Image&#

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

__int128类型movaps指令crash

结论 在使用__int128时&#xff0c;如果__int128类型的内存起始地址不是按16字节对齐的话&#xff0c;有些汇编指令会抛出SIGSEGV使程序crash。 malloc在64位系统中申请的内存地址&#xff0c;是按16字节对齐的&#xff0c;但一般使用时经常会申请一块内存自己切割使用&#…

这样写postman实现参数化,阿里p8都直呼牛逼

什么时候会用到参数化 比如&#xff1a;一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块&#xff1a;正确的用户名&#xff0c;密码 成功&#xff1b;错误的用户名&#xff0c;正确的密码 失败 postman实现参数化 在实际的接口测试中&#xff0c;部分参数…

maven打包可执行jar含依赖lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…

深入 Django 的 URL 分发器

概要 在 Django 的 MVC 架构中&#xff0c;URL 分发器扮演着至关重要的角色&#xff0c;它负责将用户的请求路由到相应的视图函数或类。这一机制不仅保证了 Django 应用的高度可扩展性&#xff0c;还为开发者提供了灵活的 URL 设计能力。本文将详细介绍 Django 中的 URL 分发器…

使用jmeter对接口进行简单测试

JMeter是一个开源的性能测试工具&#xff0c;它可以对于Web应用程序、FTP、数据库服务器等各种服务器进行性能测试和负载测试&#xff0c;以确定它们是否能够承受预期的负载。JMeter支持多种协议和技术&#xff0c;如HTTP、HTTPS、FTP、JDBC、LDAP、SOAP、JMS等。它使用Java编写…

rotation matrix reflection matrix

文章目录 1. rotation matrix1.1 结论 2. reflection matrix2.1 结论 1. rotation matrix 图像逆时针旋转 θ \theta θ的矩阵 Q r o t a t e [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (1) Q_{rotate}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\c…

B032-服务器 Tomcat JavaWeb项目 Servlet

目录 服务器服务器的认识 Tomcat服务器Tomcat服务器的介绍Tomcat的安装Tomcat报错的情况Tomcat要启动成功的条件 JavaWeb项目Web的项目结构发布项目的第一种方式发布项目的第二种方式 Eclipse中搭建动态Web项目eclipse安装Tomcat插件servletservlet示例servlet的执行流程servle…

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用 1.概述 在学习51单片机过程中&#xff0c;选择了STC的12C2052AD型号单片机作为入门芯片。前几个课题实验使用默认的内部晶振烧录程序&#xff0c;运行都没有问题。 选择一个LED亮度渐变的课题做实验&…

Spring-IOC-@Value和@PropertySource用法

1、Book.java PropertySource(value"classpath:配置文件地址") 替代 <context:property-placeholder location"配置文件地址"/> Value("${book.bid}") Value("${book.bname}") Value("${book.price}") <bean id&…

AI原生应用为百度带来新增量

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; AI将彻底改变每一个行业!得益于AI和基础模型的驱动&#xff0c;百度在AI原生应用领域厚积薄发。 11月21日&#xff0c;百度Q3财报发布&#xff0c;数据显示&#xff1a;三季度营收达344.47亿元&…

【Python大数据笔记_day11_Hadoop进阶之MR和YARNZooKeeper】

MR 单词统计流程 已知文件内容: hadoop hive hadoop spark hive flink hive linux hive mysql ​ input结果: k1(行偏移量) v1(每行文本内容)0 hadoop hive hadoop spark hive 30 flink hive linux hive mysql map结果:k2(split切割后的单词) v2(拼接…

MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(一)

在嵌入式系统开发中&#xff0c;选择一个合适的图形用户界面&#xff08;GUI&#xff09;库是至关重要的。在屏幕上显示的时候&#xff0c;使用现成的图形库&#xff0c;这样开发人员就不需要弄清楚底层任务&#xff0c;例如如何绘制像素、线条、形状&#xff0c;如果再高级一点…

CAS方式实现单点登录SSO

1. CAS介绍 CAS&#xff08;Central Authentication Service&#xff09;中心认证服务 下面这张图来自官网&#xff0c;清晰简单的介绍了CAS的继续交互过程 2. CAS具体实现 首先需要分别搭建CAS-server和CAS-client服务&#xff0c; 这两个服务分别在2台机器上&#xff0c;…

数据结构与算法实验(黑龙江大学)

实验一 顺序存储的线性表&#xff08;2 学时&#xff09; 一、实验目的 1 、掌握线性表的逻辑结构特征。 2、熟练掌握线性表的顺序存储结构的描述方法。 3 、熟练掌握顺序表上各种基本操作的实现。 二、实验内容 1 、设线性表的数据元素都为整数&#xff0c;存放在顺序表…

orvibo的Mini网关VS20ZW玩法

概述 闲鱼淘来一个2016年生产的网关,此网关的型号:VS20ZW。 已经不能用APP入网了,没事拆来玩玩。 此设备已经被淘汰,很多新的zigbee产品不再支持入网。 官网设备的简介: ZigBee Mini网关,智能家居网关,智能家居主机|ORVIBO欧瑞博智能网关 设备概貌: 主要器件: …

你了解Postman 变量吗?

变量是在Postman工具中使用的一种特殊功能&#xff0c;用于存储和管理动态数据。它们可以用于在请求的不同部分、环境或集合之间共享和重复使用值。 Postman变量有以下几种类型&#xff1a; 1、环境变量&#xff08;Environment Variables&#xff09;: 环境变量是在Postman…

Java基于B/S架构,包括PC后台管理端、APP移动端、可视化数据大屏的智慧工地源码

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

Docker基础知识总结

文章目录 1.Docker介绍2.Docker版本3.为什么要使用Docker4.Docker基础组件4.1 镜像&#xff08;Images&#xff09;4.2 容器&#xff08;Container&#xff09;和仓库&#xff08;Repository&#xff09; 5.Docker安装6.Docker run7.Dockerfile8.Docker commit9.镜像发布到镜像…