opencv4.5.0的下载与环境配置

Releases - OpenCV

vs环境配置

项目属性页

验证是否配置成功

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>using namespace cv;
using namespace std;/  Images  //void main() {string path = "Resources/test.png";Mat img = imread(path);imshow("Image", img);waitKey(0);
}

第一章

图片展示

/   Images   ///
void main()
{string path = "Resources/test.png";   //图片路径Mat img = imread(path);               //图片读取imshow("Image", img);                 //创建一个串口,图片展示waitKey(0);                           //等待图片刷新   0-无穷大
}

【OpenCV】imshow()和namedWindow()之间的关系,解决两个窗口问题

waitkey:函数告诉系统暂停并且等待键盘事件(0或负数,等待到有键被按下)。如果其传入了一个大于0的参数,它将会等待等同于该参数的毫秒事件。

视频展示

///   Video   ///
void main()
{string path = "Resources/test_video.mp4";VideoCapture cap(path);    Mat img;while (true)            //需要循环读出每一帧{  cap.read(img);imshow("Image", img);waitKey(1);}
}

网络摄像头

///   Webcam   ///
void main()
{VideoCapture cap(0);        //选择的ID号   -1-.随机选择一个Mat img;while (true){cap.read(img);imshow("Image", img);waitKey(1);}
}

第二章

cvtcolor()

一个颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间转换。也可以转换为灰度图。”

函数原型:

CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

src:平面图像源文件

dst:输出图形

code:指定转换类型

cvtColor(img, imgGray, COLOR_BGR2GRAY);

GaussianBlur()

高斯滤波器,对图像进行高斯滤波,去除噪声,图像预处理一般都用

函数原型:

CV_EXPORTS_W void GaussianBlur( InputArray src, OutputArray dst, Size ksize,double sigmaX, double sigmaY = 0,int borderType = BORDER_DEFAULT );

src:输入的图像

dst:输出图像

ksize:高斯卷积核的大小,是奇数

sigmaX, sigmaY=0, :表示高斯核x和y方向的方差,如果只给了x,同时y=0(默认)则y方向的方差与x相等

borderType=BORDER_DEFAULT :边界的处理方式,一般默认

GaussianBlur(img, imgBlur, Size(3, 3), 3, 0);

Canny()

边缘检测算法

CV_EXPORTS_W void Canny( InputArray image, OutputArray edges,double threshold1, double threshold2,int apertureSize = 3, bool L2gradient = false );

image:输入源图像

edges:输出的图形

threshold1:第一个滞后性阈值【低阈值】。值越大,找到的边缘越少

threshold2:第二个滞后性阈值【高阈值】。

apertureSize:表示应用Sobel算子的孔径大小,其有默认值3。

L2gradient:一个计算图像梯度幅值的标识,有默认值false。

低于阈值1的像素点会被认为不是边缘;

高于阈值2的像素点会被认为是边缘;

在阈值1和阈值2之间的像素点,若与第2步得到的边缘像素点相邻,则被认为是边缘,否则被认为不是边缘

Canny(imgBlur, imgCanny, 25, 75);

 getStructuringElement()

获取结构化元素,会返回指定形状和尺寸的结构元素

函数原型:

CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));

shape:表示内核的形状,有三种:

  • 矩形:MORPH_RECT
  • 交叉形:MORPH_CROSS
  • 椭圆形:MORPH_ELLIPSE

ksize:表示内核的尺寸

anchor:表示锚点的位置。
对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心点。element形状唯一依赖锚点位置,其他情况下,锚点只是影响了形态学运算结果的偏移。

Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));

dilate()

函数原型:

CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,Point anchor = Point(-1,-1), int iterations = 1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefaultBorderValue() );

使用像素邻域内的局部极大运算符来膨胀图像

scr:输入的图形

dst:输出的图形

kernel:膨胀操作的核。当为NULL时,表示的是使用的是参考点位于中心3*3的核。配合getStructuringElement()使用

anchor:Point类型的anchor,锚点的位置,默认值是 (-1, -1),表示位于中心。

iterations:int类型的iterations,迭代的次数,默认值是1。

borderType:边界类型,用于推断图像外部像素的某种边界模式,默认值是BORDER_DEFAULT。

borderValue:边界值

Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(imgCanny, imgDil, kernel);

erode()

腐蚀运算

函数原型:

CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,Point anchor = Point(-1,-1), int iterations = 1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefaultBorderValue() );

src:输入源图像

dst:输出图形

kernel:腐蚀操作的内核,若为 NULL 时,表示的是使用参考点位于中心 3x3 的核。我们一般使用函数 getStructuringElement 配合这个参数的使用。

anchor:锚的位置,其有默认值(-1,-1),表示锚位于单位(element)的中心,我们一般不用管

iterations:迭代使用 erode()函数的次数,默认值为 1。

borderType:用于推断图像外部像素的某种边界模式。注意它有默认值 BORDER_DEFAULT。

borderValue:当边界为常数时的边界值,有默值 morphologyDefaultBorderValue()

Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
erode(imgDil, imgErode, kernel);

第三章

resize()

分配容器的内存大小,对图片进行缩放

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

src - 原图
dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同
dsize - 目标图像大小,所以,参数dsize和参数(fx, fy)不能够同时为0
fx - 水平轴上的比例因子。
fy - 垂直轴上的比例因子。
最后一个参数插值方法,是默认值,放大时最好选 INTER_LINEAR ,缩小时最好选 INTER_AREA。

resize(img, imgResize, Size(), 0.5, 0.5);resize(img, imgResize, Size(600,600));

Rect类

Rect(int x, int y, int width, int height);

进行图片的裁剪

Rect(左上角 x 坐标  ,  左上角 y 坐标,矩形的宽,矩形的高)

Rect roi(100, 100, 300, 250);
imgCrop = img(roi);

第四章

void main()
{Mat 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), FILLED);//画线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.75, Scalar(0, 69, 255), 2);imshow("Image", img);waitKey(0);
}

circle函数    画圆

rectangle     矩形

line              画线

putText        输出字体

第五章

/   Warp Images   ///
float w = 250, h = 350;
Mat matrix, imgWarp;void main()
{string path = "Resources/cards.jpg";Mat img = imread(path);Point2f src[4] = { {529,142},{771,190},{405,395},{674,457} };Point2f dst[4] = { {0.0f,0.0f},{w,0.0f},{0.0f,h},{w,h} };matrix = getPerspectiveTransform(src, dst);warpPerspective(img, imgWarp, matrix, Point(w, h));for (int i = 0; i < 4; i++){circle(img, src[i], 10, Scalar(0, 0, 255), FILLED);}imshow("Image", img);imshow("Image Warp", imgWarp);waitKey(0);
}

getPerspectiveTransform warpPerspective

第6章

Mat imgHSV, mask;
int hmin = 0, smin = 0, vmin = 0;
int hmax = 255, smax = 255, vmax = 255;void main()
{string path = "Resources/shapes.png";Mat img = imread(path);cvtColor(img, imgHSV, COLOR_BGR2HSV);//创建滑块蓝namedWindow("Trackbars", (640, 200));createTrackbar("Hue Min", "Trackbars", &hmin, 179);createTrackbar("Hue Max", "Trackbars", &hmax, 179);createTrackbar("Sat Min", "Trackbars", &smin, 255);createTrackbar("Sat Max", "Trackbars", &smax, 255);createTrackbar("Val Min", "Trackbars", &vmin, 255);createTrackbar("Val Max", "Trackbars", &vmax, 255);while (true){Scalar lower(hmin, smin, vmin);Scalar upper(hmax, smax, vmax);inRange(imgHSV, lower, upper, mask);imshow("Image", img);imshow("Image HSV", imgHSV);imshow("Image Mask", mask);waitKey(1);}
}

HSV颜色空间超极详解&inRange函数用法及实战

inRange()函数、cvtColor()函数、createTrackbar()函数

4h上手C++版Opencv相关推荐

  1. matlab中caitu_tiqu,车牌识别matlab语音版+OpenCV版+测试图像和设计文档

    [实例简介] 该文件包含了车牌识别的两个版本:matlab语音版+OpenCV版,有丰富的测试实例和文档信息,测试结果能满足大部分的车牌识别. [实例截图] [核心代码] 5d61aaaa-2457- ...

  2. 使用C#版OpenCV进行圆心求取

    使用C#版OpenCV进行圆心求取 转载:https://www.cnblogs.com/tuyile006/p/10819570.html 具体代码为: https://download.csdn. ...

  3. Android版OpenCV图像处理技术亲自验证[三]之斑点检测ColorBlobDetector

    Android版OpenCV图像处理技术亲自验证[二]之斑点检测ColorBlobDetector 程序之美 前言 主体 运行效果 构建过程 核心代码 所遇问题 结束语 程序之美 前言 OpenCV是 ...

  4. DM8168 OpenCV尝试与评估(编译ARM版OpenCV)

     交叉编译opencv2.3.1,并在DM8168 cortex A8中执行图像处理. 开发环境: PC:ubuntu12.04LTS.Intel Core 2 Duo CPU  E7200@2. ...

  5. opencv计算机视觉编程攻略 第2版,OpenCV计算机视觉编程攻略(第2版)pdf

    摘要 1. 50多个知识点的案例解读,全面掌握基础知识与进阶内容 2. 学习OpenCV重要的图像操作类和函数 3. 初学者和从业者即查即用的工具书 4. 掌握计算机视觉与图像处理的基础知识与概念 O ...

  6. objective-c 2.0编程语言,Objective-C 2.0编程快速上手 EXE版[12MB]

    Objective-C 2.0编程快速上手 内容简介: <Objective-C 2.0编程快速上手>是介绍Objective-C编程的基础教程.全书采用实例讲解.按部就班的方式,全面详细 ...

  7. Vue简单快速上手 idea版

    文章目录 版本 插件安装和通过CDN使用Vue Vue的基本语法 v-bind 条件判断 循环 监听事件 表单双绑 1.什么是双向数据绑定 2.在表单中使用双向数据绑定 组件 什么是组件 第一个Vue ...

  8. 【C++版Opencv】【Ubuntu】VScode配置Opencv

    1 安装基本工具 sudo apt install -y g++ sudo apt install -y cmake sudo apt install -y make sudo apt install ...

  9. JAVA版opencv透明,opencv 替换纯色背景为透明背景

    最近在开发抠图项目,有个同事想抠除一种颜色,这个用opencv就很简单了,我用的opencv3,正好有foreach可以用,

最新文章

  1. 牛人是怎样用函数实现本地化测试的
  2. 构建之法第三章软件工程师的成长
  3. C#中File的使用
  4. wordpress相关插件及应用模板
  5. 7.01面试长沙黄花机场
  6. mysql InnoDB 聚集索引,二级索引
  7. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第一题:填算式
  8. Google Guava并发– ListenableFuture
  9. Srping MVC入门推荐
  10. c语言中文刷屏,c语言二维数组刷屏练习.doc
  11. AnySDK项目实战教程
  12. Linux从入门到精通——数据库
  13. 测试象棋水平用哪个软件好,佳佳象棋软件作者李国来对象棋软件引擎的专业看法及测试指导...
  14. 华为虚拟机eNSP命令大全
  15. 虚函数表构成、地址详细说明
  16. 谷歌浏览器代理服务器出现问题怎么办?(最快的解决办法)
  17. html 批量pdf 打印,html转pdf打印
  18. antd中如何实现分页勾选记住之前的选项
  19. java学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,根据性别分别进入男子组和女子组使用if条件语句
  20. 初识Uniprot API

热门文章

  1. AndroidStudio - - - 点击头像更换头像_菜单选择_相机拍照与相册获取
  2. 看似简单的任务-分享二维码图片到微信(分享图片的生成)
  3. 工商管理专业知识与实务(初级)【2】
  4. 用python3实现MD5withRSA数字签名的验证
  5. 【微服务】Spring Cloud 基础
  6. python 海龟交易法则_【手把手教你】用Python量化海龟交易法则
  7. slg游戏客户端框架简析
  8. 玩转ECS第6讲 | 弹性计算 Region 化部署和跨可用区容灾介绍
  9. 逆向微信Mac客户端:微信情话助手初版
  10. 计算机教师幽默介绍,老师幽默的自我介绍6篇