
OpenCV学习
文章平均质量分 70
针对OpenCV学习的一点总结,进行相关梳理
浩瀚之水_csdn
路漫漫其修远兮,吾将上下而求索,立刻行动,坚持,努立
展开
-
深入浅出之OpenCV-Python
是 OpenCV 库的 C++ 实现的 Python 包装器。它利用 NumPy 库进行数值运算,是解决计算机视觉问题的快速原型设计工具。OpenCV-Python 是一个跨平台库,可用于所有操作系统 (OS) 平台,包括 Windows、Linux、MacOS 和 Android。OpenCV 还支持图形处理单元 (GPU) 加速。原创 2024-12-19 14:00:59 · 2978 阅读 · 0 评论 -
opencv日常使用记录
1。 opencv函数之saturate_cast(防止溢出)uchar a = saturate_cast<uchar>(-100); // a = 0 (UCHAR_MIN)short b = saturate_cast<short>(33333.33333); // b = 32767 (SHRT_MAX)在图像处理方面,无论是加是减,乘除,都会超出一个像素灰度值的范围(0~255),saturate_cast函数的作用即是:当运算完之后,结果为负,则转为0,结果超原创 2022-04-15 08:52:12 · 1946 阅读 · 0 评论 -
Qt实用技巧:使用OpenCV库操作摄像头拍照、调节参数和视频录制
需求使用OpenCV做功能,播放摄像头(usb和网络),对摄像头设备进行参数调整(亮度、对比度、饱和度、色调、增益、曝光度)调节,拍照和录像。原理使用OpenCV打开摄像头(可打开USB和网路哦摄像头),渲染图像显示,可使用OpenCV属性调整摄像头的各项参数,使用拍照可以将当前图片拍照,使用录像可以从当前时间点开始录像直至停止录像注意目前测试,即使PC上有编码器,但是OpenCV存储mat为对应的录像视频文件失败,出现:录制完视频大小为200多B(基本为0),mp4格式时(转载 2022-03-09 14:04:37 · 6669 阅读 · 0 评论 -
同时读取两个USB摄像头采集
1.OpenCV:VideoCapture同时打开两个摄像头#include <opencv2/opencv.hpp>#include<iostream> using namespace cv;using namespace std; int main(){ //initialize and allocate memory to load the video stream from camera VideoCapture camera0(1..原创 2022-02-18 13:49:08 · 2179 阅读 · 1 评论 -
opencv同时开启两个外接USB摄像头采集图像信息,并设置摄像头输出图像的分辨率
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; int main(){ VideoCapture cap2(2);// 内部参数写0,代表笔记本自带的摄像头,2、1分别代表两个外接USB摄像头 VideoCapture cap1(1); // 设置分辨率 cap2.set(CV_CAP_PROP_FRAME.转载 2022-02-16 11:38:38 · 1572 阅读 · 0 评论 -
cv::Mat 与 float 互换,实现 argmax 得到像素点分类
Functions:preprocess 预处理图片,resize, [0, 1], normalize, pass to float array cvtArray2Mat 将 float array 存放的数据再存为 cv::Mat channelArgMax 取每个 channel 数组中最大值下标作为预测种类,use argmax#include <iostream>#include <opencv2/core/core.hpp>#include <o转载 2021-09-06 19:01:28 · 4523 阅读 · 0 评论 -
OpenCV学习笔记之改变图像的对比度和亮度
一、图像对比度和亮度图像对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。差异范围越大代表对比越大,差异范围越小代表对比越小,好的对比率120:1就可容易地显示生动、丰富的色彩,当对比率高达300:1时,便可支持各阶的颜色。韦伯定律(感觉阈值定律):[2]在同种刺激下,人所能感受到的刺激的动态范围正比于标准刺激的强度,K=ΔI/IK...原创 2020-03-14 16:52:34 · 2758 阅读 · 0 评论 -
OpenCV学习笔记之图像融合
一、线性融合操作线性混合操作也是一种典型的二元(两个输入)的像素操作:通过在范围内改变,这个操可以用来对两幅图像或两段视频产生时间上的画面叠化(cross-dissolve)效果,就像在幻灯片放映和电影制作中那样二、操作实践#include <QCoreApplication>#include <iostream>#includ...原创 2020-03-14 16:30:41 · 1111 阅读 · 1 评论 -
OpenCV学习笔记之掩码操作
一、掩码操作 矩阵的掩码操作很简单。其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响。从数学观点看,我们用自己设置的权值,对像素邻域内的值做了个加权平均。二、操作实践2.1基于像素邻域的掩码操作/*! * \brief myMaskFun * \param srcImage...原创 2020-03-14 16:02:49 · 1802 阅读 · 1 评论 -
OpenCV掩码操作练习
QT += coreQT -= guiCONFIG += c++11TARGET = myOpencvTest1CONFIG += consoleCONFIG -= app_bundleTEMPLATE = appSOURCES += main.cppINCLUDEPATH += C:\OpenCv4.0\include \ C:\Ope...原创 2020-03-14 15:59:49 · 942 阅读 · 0 评论 -
OpenCV扫描图像三种方式练习
在OpenCV中,扫描图像通常指的是逐像素地遍历图像数据。原创 2020-03-14 15:19:23 · 1016 阅读 · 1 评论 -
OpenCV学习笔记之扫描图像
一、图像在内存中存储方式图像矩阵的大小取决于我们所用的颜色模型,确切地说,取决于所用通道数。如果是灰度图像,矩阵就会像这样:而对多通道图像来说,矩阵中的列会包含多个子列,其子列个数与通道数相等。例如,RGB颜色模型的矩阵:注意到,子列的通道顺序是反过来的:BGR而不是RGB。很多情况下,因为内存足够大,可实现连续存储,因此,图像中的各行就能一行一行地连接起来,形成一个长行。连...原创 2020-03-14 15:12:23 · 1318 阅读 · 1 评论 -
OpenCV Mat编程练习
QT += coreQT -= guiCONFIG += c++11TARGET = myOpencvTest1CONFIG += consoleCONFIG -= app_bundleTEMPLATE = appSOURCES += main.cppINCLUDEPATH += C:\OpenCv4.0\include \ C:\Ope...原创 2020-03-03 17:23:29 · 1052 阅读 · 1 评论 -
OpenCV学习笔记之Mat
一. Mat介绍在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建。为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教程和教学材料。但这种方法必须接受C语言所有的不足,这其中最大的不足要数手动内存管理,其依据是用户要为开辟和销毁内存负责。虽然对于小型的程序来说手动管理内存不是问题,但一旦代码开始变得越来越庞大,你需...原创 2020-03-03 17:19:03 · 1160 阅读 · 1 评论 -
OpenCV学习笔记之OpenCV安装
一. Opencv的安装及配置二. Qt框架下使用OpenCV 2.1 在Pro中配置OpenCV 第一种方式:QT += coreQT -= guiCONFIG += c++11TARGET = myOpencvTest1CONFIG += consoleCONFIG -= app_bundleTEMPLATE = app...原创 2020-02-29 14:53:50 · 1433 阅读 · 1 评论 -
Qt使用OpenCV读取图片练习
【代码】Qt使用OpenCV读取图片练习。原创 2020-02-29 12:54:41 · 1501 阅读 · 1 评论 -
Opencv学习笔记之OpenCV介绍
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类,同时提供了Python、Ruby、MATLAB等语言的接口,实现了和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。原创 2020-02-29 10:10:46 · 4136 阅读 · 1 评论 -
OpenCV学习笔记(一):图像显示
《WIN10+VS2015+OpenCV3.1.0配置》文章中配置好OpenCV后第一个测试程序就是显示图像,但是显示图像不止这一种方法,索性就记录下我目前知道的其他图像显示方法,以便之后检索,其中不完善之处希望读者能够指出。根据百度文库上的这篇文章,知道OpenCV上常见的有四种表示图像的结构。分别是CvArr,CvMat,IplImage,Mat。CvArr老版本的图像表示结构。是一个抽象基类...转载 2018-06-27 16:43:16 · 206 阅读 · 0 评论 -
Win7系统Visual Studio 2013配置OpenCV3.1图文详解
Win7系统Visual Studio 2013配置OpenCV3.1图文详解OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简单一些。但一直用OpenCV2.4,直到最近准备写点东西才抽出时间更新了一下开发环境:Win7,64bit系统,安装VS2013并配置OpenCV3.1。因为OpenCV3.1只有针对vc12(对应vs...转载 2018-06-03 09:58:48 · 300 阅读 · 0 评论 -
ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7
ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7安装步骤:1.安装cuda9.0:https://blog.youkuaiyun.com/zhuangwu116/article/details/810632342.安装依赖包:sudo apt-get install build-essentialsudo apt-get install python-dev py...转载 2019-08-27 10:55:14 · 589 阅读 · 1 评论 -
Python-OpenCV基本操作cv2
1.图片加载、显示和保存import cv2# 生成图片img = cv2.imread("1.jpg")# 生成灰色图片imgGrey = cv2.imread("1.jpg", 0)# 展示原图cv2.imshow("img", img)# 展示灰色图片cv2.imshow("imgGrey", imgGrey)# 等待图片的关闭cv2.waitKey()...转载 2019-04-17 15:10:01 · 1297 阅读 · 0 评论 -
cvNamedWindow与namedWindow,cvShowImage与inshow的区别
1. 显示窗口大小的改变方法不同。在c版本中,定义一个窗口时用cvNamedWindow.比如说cvNamedWindow(“src”,0);后面的参数为0表示窗口大小可以手动改变,否则窗口的大小是自适应图片大小的。而在c++版本中定义一个窗口用namedWindow.比如说namedWindow(“src”,1);不管后面第二个参数是多少,都不能手动更改窗口的大小,因为它的尺寸...转载 2019-03-27 09:33:58 · 1963 阅读 · 0 评论 -
Opencv判断是否加载图片的两种方法
加载图片是图像处理最基本的操作,但有的时候我们加载图片会因为图片路径不正确或者没有图片等原因而报错,经常写代码的凭经验就知道是哪错了,但初学者一般是看不懂这些错误,就会很恼火了,如果加个判断语句就会不一样了啥,如果是图片路径的原因而导致加载不到图片,它会在终端显示你要输出的错误信息,这样一看就很清楚了。【方法一】[html] view plain copysrc = imread( "1.jpg...转载 2018-05-08 05:47:33 · 3763 阅读 · 0 评论 -
OpenCV学习小记
1.反转图像函数:cv::flip()[cpp] view plain copyvoid flip(InputArray src, OutputArray dst, int flipCode); 参数fipCode: 整数,水平发转;0垂直反转;负数,水平垂直均反转。2.sobel边缘检测函数:cv::sobel()例程:[html] view plain copy//从文件中读入图像 con...转载 2018-05-08 05:49:50 · 194 阅读 · 0 评论 -
OpenCV的基本矩阵操作与示例
OpenCV的基本矩阵操作与示例OpenCV中的矩阵操作非常重要,本文总结了矩阵的创建、初始化以及基本矩阵操作,给出了示例代码,主要内容包括:创建与初始化矩阵加减法矩阵乘法矩阵转置矩阵求逆矩阵非零元素个数矩阵均值与标准差矩阵全局极值及位置其他矩阵运算函数列表1. 创建与初始化矩阵1.1 数据类型建立矩阵必须要指定矩阵存储的数据类型,图像处理中常用的几种数据类型如下:[cpp] view plain...转载 2018-06-03 09:56:53 · 1655 阅读 · 0 评论 -
windows环境下的Anaconda安装与OpenCV机器视觉环境搭建
windows环境下的Anaconda安装与OpenCV机器视觉环境搭建本文介绍win7和win10系统下通过Anaconda配置基于python语言的机器视觉编程环境(博主测试了两个系统下的安装基本相同),主要内容包括:Anaconda下载安装OpenCV下载安装测试安装结果1.Anaconda下载与安装1.1 Anaconda简介官方网址:https://www.anaconda.com/An...转载 2018-06-03 09:58:01 · 614 阅读 · 0 评论 -
DIY一个基于树莓派和Python的无人机视觉跟踪系统
DIY一个基于树莓派和Python的无人机视觉跟踪系统无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配。如果想来点高级的——在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其实视觉跟踪已经在一些高端的消费级无人机上有了应用,不过玩现成的永远没有自己动手来劲;)。前段时间DIY了一个无人机三轴云台的视觉跟踪系统,除去云台花了¥370,本文将设计思路与实验效果分享出来。一、基本...转载 2018-06-03 09:59:46 · 3065 阅读 · 0 评论 -
OpenCV —数据持久化: FileStorage类的数据存取操作与示例
OpenCV —FileStorage类的数据读写操作与示例OpenCV的许多应用都需要使用数据的存储于读取,例如经过3D校准后的相机,需要存储校准结果矩阵,以方便下次调用该数据;基于机器学习的应用,同样需要将学习得到的参数保存等。OpenCV通过XML/YAML格式实现数据持久化。本文简要梳理了使用FileStorage类进行基本数据持久化操作,给出了示例代码。主要内容包括:FileStorag...转载 2018-06-03 10:04:35 · 604 阅读 · 0 评论 -
OpenCV—基本数据结构与示例
OpenCV的基本数据结构及示例OpenCV中强大的Mat类型大家已经比较熟悉了。这里梳理一些在工程中其他经常用到的几种基本数据类型。包括: Vec Scalar Point Size Rect RotatedRect1. Vec类1.1 基本概念 Vec是一个模板类,主要用于存储数值向...转载 2018-06-03 10:06:08 · 323 阅读 · 0 评论 -
OpenCV—中值滤波
中值滤波器中值滤波器是一种非线性滤波器,常用于消除图像中的椒盐噪声。与低通滤波不同的是,中值滤波有利于保留边缘的尖锐度,但它会洗去均匀介质区域中的纹理。椒盐噪声椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(salt noise)盐=白色(255),另一种是胡椒噪声(pepper noise),椒=黑色(0)。前者是高灰度噪声,后者属于低...转载 2018-06-27 16:44:44 · 17980 阅读 · 0 评论 -
OpenCV—图像椒盐噪声生成器
OpenCV—图像椒盐噪声生成器椒盐噪声椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(salt noise)盐=白色(255),另一种是胡椒噪声(pepper noise),椒=黑色(0)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。对于彩色图像,也有可能表现为在单个像素BGR三个通道随机出现的...转载 2018-06-27 16:44:29 · 1546 阅读 · 0 评论 -
OpenCV—矩阵数据类型转换cv::convertTo
是 OpenCV 库中的一个函数,用于将图像或矩阵从一种数据类型转换为另一种数据类型,同时可以选择性地应用缩放和偏移。这个函数非常有用,因为它允许你在处理图像数据时,根据需要改变数据的类型,比如从浮点型转换为整型,或者从一种整型转换为另一种整型。打印出的转换后矩阵中的值将是原始浮点数矩阵中的值经过裁剪和类型转换后的结果。可以避免数据溢出的问题,因为它在转换过程中会考虑数据类型的范围。在这个示例中,我们创建了一个3x3的浮点数矩阵,并将其转换为3x3的8位无符号整型矩阵。原创 2018-06-27 16:44:17 · 1134 阅读 · 1 评论 -
OpenCV—形态学运算定义与实现
除了使用常规的规则结构元素,我们也可以自定义结构元素。下面使用Mat类型的构造函数创建一个3×3十字型的结构元素。// 创建自定义结构元素0,1,0,1,1,1,0,1,0//创建自定义矩阵element1//显示该结构元素j原创 2018-06-27 16:44:03 · 1336 阅读 · 0 评论 -
OpenCV学习笔记(七):访问图像中像素的三类方法
该文章参考毛星云著《OpenCV3编程入门》,电子工业出版社。图像是以像素为单位储存的,访问图像中的每个像素是处理图像的基础,一般有三种访问图像像素的方法:方法一:指针访问:C操作符[ ]方法二:迭代器iterator方法三:动态地址计算下面直接上代码,代码的目的是减少图像的颜色种类数,即减少颜色的细分。[cpp] view plain copy#include<opencv2/opencv...转载 2018-06-27 16:43:44 · 286 阅读 · 0 评论 -
OpenCV学习笔记(五):Mat结构
在之前的OpenCV学习笔记(一)用到的几种显示图像的方法中其中一种就是Mat。Mat结构在OpenCV 2.0后才得到广泛应用,相对于OpenCV1.0时代中的IplImage,它有个好处就是不用再手动释放图像内存。而用IplImage格式存储图像的时候就必须在推出前将图像内存release掉,即添加语句cvReleaseImage(&iplImg);,否则会造成内存泄漏。除了这个好处外...转载 2018-06-27 16:43:31 · 603 阅读 · 0 评论 -
Opencv中三种操作像素的方法
测试环境:opencv3.1.0 + Visual Studio 2015 + win7 64位 opencv中有3中方法可以访问/修改图像的像素值,分别为:1. 指针访问2. 迭代器iterator3. 动态地址计算 测试程序如下:#include "opencv2/opencv.hpp"#include "iostream" using namespace std...转载 2018-07-04 16:36:17 · 3337 阅读 · 0 评论 -
在OpenCV环境下对图像做Gamma校正
什么是Gamma校正?Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系。上面中的指数γ即为Gamma.经过Gamma校正后的输入和输出图像灰度值关系如下图所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色曲线是gamma值大于1时的输入输出关系。可以观察到,当gamma值小于1时(蓝色曲线),图像...转载 2018-11-15 15:50:35 · 3725 阅读 · 0 评论 -
数字图像处理资料集锦(Python、C++、Matlab)
一、Numpy的基础 python中numpy与matlab的对应关系 二、 基于skimage数字图像处理 python数字图像处理(1):环境安装与配置 python数字图像处理(2):图像的读取、显示与保存 python数字图像处理(3):图像像素的访问与裁剪 python数字图像处理(4):图像数据类型及颜色空间转换 python数字...原创 2018-11-30 14:51:34 · 1388 阅读 · 0 评论 -
Opencv、OpenCV2.x、Opencv3.x个版本的进化,与VS各个版本的匹配问题
首相声明,本文章借鉴了其他文章,会给与文章链接。1.opencv 与opencv2.x版本Opencv1.0版本于2006年面世,主要基于C语言。2009年发布opencv2,主要基于C++。此时OpenCV库被划分成多个模块,这些模块被编译成库文件后,位于lib文件夹中。主要有以下模块(版本1的结构见我的这篇blog:http://blog.youkuaiyun.com/lu597203933/art...转载 2019-03-27 09:31:02 · 881 阅读 · 0 评论 -
OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的,所以我就想着研究一下这个库,这里是个人的学习笔记,不是什么权威的教程,如果你们有错误也麻烦帮我指出哈。==================================转载 2018-02-05 18:48:35 · 221 阅读 · 0 评论