------OpenCV------
ooMelloo
☆人工智能/机器学习/深度学习工程师进击中
☆立志成为数学好编程好业务好的三好青年
☆人必有痴 而后有成
展开
-
OpenCV——高效遍历图像(C++版本)
OpenCV遍历图像像素是很常见的事情,比较下面的三种遍历方式哪个是最高效的。前言在OpenCV C++中Mat对象的内存管理由OpenCV框架自动负责内存分配与回收,基于智能指针实现内存管理。Mat对象的数据组织形式与像素块数据的存储方式,Mat对象由两个部分组成,元数据头部加像素数据块部分,图示如下:三种图像遍历方式方法一基于Mat对象的随机像素访问API实现,通过行列索引方式遍历每个像素值void method_1(Mat &image) { double原创 2021-03-09 18:30:12 · 3474 阅读 · 2 评论 -
win10换源安装opencv-python
win10我们在用pip安装工具包时,会因为网速和ssl证书原因造成安装失败:解决方法:1.在安装工具包后追加镜像源和信任ssl证书pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com2.配置镜像源毕竟每次安装都添加镜像源和证书会很麻烦新建文件C:\Users\ybb\pip\pip.ini添加如下配置:[global]trusted-host=mirrors.a原创 2020-12-25 14:17:02 · 622 阅读 · 0 评论 -
Linux 完全卸载重装opencv
一、完全卸载opencv1. 先到opencv编译安装的目录下sudo make uninstallcd ..sudo rm -r build2.上面最后一行命令有的文件夹不存在会有提示,但是不影响,只要把已安装的opencv的include和lib删掉就行,也可以手动删除,总之删除干净即可。sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/i.原创 2020-11-25 16:27:36 · 17658 阅读 · 2 评论 -
OpenCV—Python官方文档
http://www.woshicver.com/原创 2020-03-18 11:28:03 · 3879 阅读 · 0 评论 -
OpenCV精进之路(七):图像变换——重映射与仿射变换
重映射重映射就是把一幅图像中某个位置的像素放置到另一个图片中指定位置的过程。用一个数学公式来表示就是:其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的。在OpenCV中,用的是remap函数实现重映射。基本重映射#include <iostream>#include <opencv2\opencv.hpp>#i...原创 2019-04-08 17:15:30 · 326 阅读 · 0 评论 -
OpenCV精进之路(十):直方图匹配——模板匹配
模板匹配的作用在图像识别领域作用可大了。那什么是模板匹配?模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术。说的有点抽象,下面给个例子说明就很明白了。在上面这幅全明星照中,我们想找出姚明头像的位置,并把它标记出来,可以做到吗?可以,这就是模板匹配的要做的事情。其实模板匹配实现的思想也是很简单很暴力的,就是拿着模板图片(姚明头像)在原图(全明星照...原创 2019-04-08 17:18:23 · 1259 阅读 · 0 评论 -
OpenCV精进之路(九):图像轮廓和图像分割修复——图像修复技术
在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏。如果我们想让这些受到破坏的额图片尽可能恢复到原样,Opencv能帮我们做到吗?OpenCV真的有这个妙手回春的功能!别以为图像修补的工作只能用PS或者美图秀秀那些软件去做,其实由程序员自己写代码去做更加高效!图像修复技术的原理是什么呢...原创 2019-04-08 17:20:11 · 1224 阅读 · 0 评论 -
OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓
Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体。所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓。OpenCV中有一个很强大的函数,它可以从二值图像中找到轮廓:findContours函数。有时我们还需要把找到的轮廓画出来,那就要用到函数drawContours了。findContours函数和那就要用到函数drawContou...原创 2019-04-08 17:22:50 · 1132 阅读 · 0 评论 -
OpenCV精进之路(十四):图像矫正技术深入探讨
刚进入实验室导师就交给我一个任务,就是让我设计算法给图像进行矫正。哎呀,我不太会图像这块啊,不过还是接下来了,硬着头皮开干吧!那什么是图像的矫正呢?举个例子就好明白了。我的好朋友小明给我拍了这几张照片,因为他的拍照技术不咋地,照片都拍得歪歪扭扭的,比如下面这些照片:人民币发票文本这些图片让人看得真不舒服!看个图片还要歪脖子看,实在是太烦人了!我叫小明帮我扫描一下一本教科书,...原创 2019-04-08 17:34:16 · 2614 阅读 · 4 评论 -
OpenCV精进之路(十一):感兴趣区域ROI和logo添加技术
在图像处理领域,有一个非常重要的名词ROI。什么是ROI?它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域。感兴趣区域,就是我们从图像中选择一个图像区域,这个区域就是图像分析所关注的焦点。我们圈定这个区域,那么我们要处理的图像就从大图像变为一个小图像区域了,这样以便进行进一步处理,可以大大减小处理时间。定义ROI区域有两种方法:第一种,指定矩形的...原创 2019-04-08 17:24:41 · 317 阅读 · 0 评论 -
OpenCV探索之路(六):图像变换——霍夫变换
前言我们如何在图像中快速识别出其中的圆和直线?一个非常有效的方法就是霍夫变换,它是图像中识别各种几何形状的基本算法之一。霍夫线变换霍夫线变换是一种在图像中寻找直线的方法。OpenCV中支持三种霍夫线变换,分别是标准霍夫线变换、多尺度霍夫线变换、累计概率霍夫线变换。在OpenCV中可以调用函数HoughLines来调用标准霍夫线变换和多尺度霍夫线变换。HoughLinesP函数用于调...原创 2019-04-08 16:31:17 · 850 阅读 · 0 评论 -
OpenCV探索之路(五):图像变换——边缘检测(canny、sobel、laplacian)
前言边缘检测的一般步骤:滤波——消除噪声 增强——使边界轮廓更加明显 检测——选出边缘点一、Canny算法Canny边缘检测算法被很多人推崇为当今最优秀的边缘检测算法,所以我们第一个就介绍他。opencv中提供了Canny函数。#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgu...原创 2019-04-08 16:19:46 · 668 阅读 · 0 评论 -
OpenCV精进之路(四):图像处理——图片的缩放和图像金字塔
前言对图像进行缩放的最简单方法当然是调用resize函数啦!resize函数可以将源图像精确地转化为指定尺寸的目标图像。要缩小图像,一般推荐使用CV_INETR_AREA来插值;若要放大图像,推荐使用CV_INTER_LINEAR。一、缩放调用方式第一种,规定好你要图片的尺寸,就是填入你要的图片的长和高。#include<opencv2\opencv.hpp>...原创 2019-04-08 16:16:01 · 364 阅读 · 0 评论 -
OpenCV精进之路(三):图像处理——形态学滤波(膨胀、腐蚀、开闭运算)
前言腐蚀和膨胀是最基本的形态学运算。腐蚀和膨胀是针对白色部分(高亮部分)而言的。膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。一、膨胀膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。#include<opencv2\opencv.hpp> ...原创 2019-04-08 15:43:54 · 391 阅读 · 0 评论 -
OpenCV精进之路(二):图像处理——线性滤波和非线性滤波
前言滤波处理分为两大类:线性滤波和非线性滤波。OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法。线性滤波线性滤波有方框滤波、均值滤波、高斯滤波三种滤波。(一)方框滤波#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using names...原创 2019-04-08 15:38:34 · 914 阅读 · 0 评论 -
OpenCV精进之路(一):图像处理知识点串烧
opencv图像初始化操作#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){ //这些方式都是自己拥有独立的内存空...原创 2019-04-08 15:11:04 · 241 阅读 · 0 评论 -
OpenCV精进之路(零):访问图像中像素的三种方法
访问像素的三种方法指针访问:最快 迭代器iterator:较慢,非常安全,指针访问可能出现越界问题 动态地址计算:更慢,通过at()实现。适用于访问具体某个第i行,j列的像素,而不适用遍历像素这里可以参考毛星云的OpenCV入门编程中的这三种方法的访问时间https://download.csdn.net/download/aidam_bo/11097032Ma...原创 2019-04-08 14:52:06 · 470 阅读 · 0 评论 -
三维重建:三维重建技术概述
基于视觉的三维重建,指的是通过摄像机获取场景物体的数据图像,并对此图像进行分析处理,再结合计算机视觉知识推导出现实环境中物体的三维信息。1. 相关概念(1)彩色图像与深度图像彩色图像也叫作RGB图像,R、G、B三个分量对应于红、绿、蓝三个通道的颜色,它们的叠加组成了图像像素的不同灰度级。RGB颜色空间是构成多彩现实世界的基础。深度图像又被称为距离图像,与灰度图像中像素点存储亮度值不同,...转载 2019-04-10 13:58:06 · 2255 阅读 · 1 评论 -
OpenCV精进之路(十二):详解掩膜mask
在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢?一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用。经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解。比如我要对一幅图进行抠图操作,这就要用到Mask了,那我就以抠图为例,解释Mask在里面的作用。先上程序,再一句一句剖析。...原创 2019-04-08 17:27:47 · 537 阅读 · 0 评论 -
OpenCV精进之路(零):core组件——绘制点、直线、几何图形
绘制点和圆void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line_type=8, int shift=0 );img:图像。 center:圆心坐标。 radius:圆形的半径。 color:线条的颜色。 thic...原创 2019-04-08 17:30:08 · 318 阅读 · 0 评论 -
OpenCV精进之路(二十三):实例——Bag of Features(BoF)图像分类实践
在深度学习在图像识别任务上大放异彩之前,词袋模型Bag of Features一直是各类比赛的首选方法。首先我们先来回顾一下PASCAL VOC竞赛历年来的最好成绩来介绍物体分类算法的发展。从上表我们可以发现,在2012年之前,词袋模型是VOC竞赛分类算法的基本框架,几乎所有算法都是基于词袋模型的,可以这么说,词袋模型在图像分类中统治了很多年。虽然现在深度学习在图像识别任务中的效果更胜一筹...转载 2019-04-09 10:34:56 · 928 阅读 · 1 评论 -
OpenCV精进之路(二十二):实例——皮肤检测技术
好久没写博客了,因为最近都忙着赶项目和打比赛==| 好吧,今天我打算写一篇关于使用opencv做皮肤检测的技术总结。那首先列一些现在主流的皮肤检测的方法都有哪些:RGB color space Ycrcb之cr分量+otsu阈值化 YCrCb中133<=Cr<=173 77<=Cb<=127 HSV中 7<H<20 28<S<256 50&...转载 2019-04-09 10:27:35 · 755 阅读 · 0 评论 -
OpenCV精进之路(二十一):实例——去除发票上的印章
最近在做票据识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此,我们必须先对票据图像进行一定的预处理来移除印章干扰,再进行字符识别,这样子识别准确率才有保证。我们从简单例子说起,比如我们有以下一张票据,上面盖有红色印章,虽然该印章没有遮挡关键信息,但是我们还是打...原创 2019-04-09 10:25:06 · 1591 阅读 · 0 评论 -
OpenCV精进之路(二十):工具——图像标注小工具
搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注。图像标注是件很枯燥又很费人力物力的一件事情,但是又不能回避,毕竟搞深度学习如果没有数据集那一切都是瞎搞。最近我在参加一个有关图像深度学习的比赛,因为命题方没有给出训练集,所以需要队伍自己去标注训练集,所以我花点时间开发了一...原创 2019-04-09 10:22:08 · 1336 阅读 · 0 评论 -
OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术
图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办法一次将所有你要拍的景物全部拍下来,所以你对该场景从左往右依次拍了好几张图,来把你要拍的所有景物记录下来。那么我们能不能把这些图像拼接成一个大图呢?我们利用opencv...原创 2019-04-09 10:19:13 · 1289 阅读 · 1 评论 -
OpenCV精进之路(十五):特征检测和特征匹配方法汇总
一幅图像中总存在着其独特的像素点,这些点我们可以认为就是这幅图像的特征,成为特征点。计算机视觉领域中的很重要的图像特征匹配就是一特征点为基础而进行的,所以,如何定义和找出一幅图像中的特征点就非常重要。这篇文章我总结了视觉领域最常用的几种特征点以及特征匹配的方法。在计算机视觉领域,兴趣点(也称关键点或特征点)的概念已经得到了广泛的应用, 包括目标识别、 图像配准、 视觉跟踪、 三维重建等。 这个...原创 2019-04-09 10:09:10 · 476 阅读 · 0 评论 -
OpenCV精进之路(十九):工具——程序打包发布
我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果。比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他要看看功能实现的怎么样。老师的电脑肯定没有整套的开发环境的,如果你想只把代码发给他,让他自己编译,肯定会出现问题。所以,我们需要掌握如何生成一个不依赖开发环境的exe的方法。下面将以一个实际例子说...原创 2019-04-09 10:05:22 · 2884 阅读 · 1 评论 -
OpenCV精进之路(十八):工具——“全能扫描王“扫描软件
相信很多人手机里都装了个“扫描全能王”APP,平时可以用它来可以扫描一些证件、文本,确实很好用,第一次用的时候确实感觉功能很强大啊算法很牛逼啊。但是仔细一想,其实这些实现起来也是很简单的,我想了下,实现的步骤应该就只有下面三个:将证件轮廓找到 提取证件矩形轮廓四点进行透视变换 二值化知道原理之后,我马上利用强大的opencv开发一个类似“全能扫描王”扫描工具。整理一下我们要制作的这个...原创 2019-04-09 09:49:23 · 1528 阅读 · 2 评论 -
OpenCV精进之路(十七):工具——图像配准工具
近日在做基于sift特征点的图像配准时遇到匹配失败的情况,失败的原因在于两幅图像分辨率相差有点大,而且这两幅图是不同时间段的同一场景的图片,所以基于sift点的匹配已经找不到匹配点了。然后老师叫我尝试手动选择控制点来支持仿射变换。很可惜opencv里没有这类似的库,查了下资料,看看有没有现成的手动配准软件,找到了arcgis这款软件可以做手动配准,不过这软件也都太大了吧我要的只是一个简单的功能...原创 2019-04-08 17:42:55 · 1165 阅读 · 1 评论 -
OpenCV精进之路(零):HighGUI——读写XML和YML文件
前言有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理。一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作。那么如果遇到这样的场景,我们有什么好方法,搭建这类的小型数据库文件?我第一时间想到的是把这些数据全写到文件上,下次我们需要这些数据就把他们从文件里读出来就好了。其实更好的办法是使用xml和yml,因为他们...原创 2019-04-08 17:40:44 · 362 阅读 · 0 评论 -
OpenCV探索之路(零):HighGUI——使用imwrite调整保存的图片质量
近日在用opencv做一些图像处理的操作时,需要对一些高分辨率的图像进行保存。比如,在操作一个容量为230M的图像后,并对该图像保存为JPG格式后,发现图像容量变为80M了!针对这个问题,忙了大半天,到处翻阅资料,终于知道为什么了。先举个例子说明自己遇到的问题,为了看出效果,我特意用了一个高分辨率的图片做实验。比如我有如下的一个233M的图片经过下面的程序读进内存,再次保存后,图片容量...原创 2019-04-08 17:37:58 · 630 阅读 · 0 评论 -
OpenCV精进之路(零):core组件——Mat和IplImage访问像素的方法总结
在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作,访问元素就是各种图像处理算法的第一步。首先先看看图像的是怎么存储的。单通道图像多通道图像Mat访问图像元素方法汇总1.用指针访问元素在大多数图像处理任务中, 执行计算时你...原创 2019-04-08 17:36:08 · 298 阅读 · 0 评论 -
OpenCV精进之路(十三):角点检测
角点检测是计算机视觉系统中用来获取图像特征的一种方法。我们都常说,这幅图像很有特点,但是一问他到底有哪些特点,或者这幅图有哪些特征可以让你一下子就识别出该物体,你可能就说不出来了。其实说图像的特征,你可以尝试说一下这幅图有几个矩形啊几个圆形啊,有几条直线啊,当然啦,你也可以说一下有几个角点。什么是角点?角点通常被定义为两条边的交点。比如,三角形有三个角,矩形有四个角,这些就是角点,也是他们...原创 2019-04-08 17:31:44 · 352 阅读 · 0 评论 -
三维重建:三维重建基础
前言 三维重建技术通过深度数据获取、预处理、点云配准与融合、生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型。这种模型可以对如文物保护、游戏开发、建筑设计、临床医学等研究起到辅助的作用。1.1 研究背景及意义人类通过双眼来探索与发现世界。人类接收外部信息的方式中,有不到三成来自于听觉、触觉、嗅觉等感受器官,而超过七成、最丰富、最复杂的信息则通过视觉[1]进行感知...转载 2019-04-10 13:55:24 · 3350 阅读 · 4 评论 -
OpenCV:框选某一特定区域并保存到图片
一、基本原理 Mat img= imread(image);Rect rect(50,20, 200, 50);Mat ROI = img(rect);imshow("ROI_WIN",ROI);- 其中:Rect的函数定义为: Rect(_Tp _x, _Tp _y, _Tp _width, _Tp _height); _Tp _x:表示矩形左上角顶点的x坐标; _Tp _...原创 2019-02-25 22:11:31 · 4022 阅读 · 0 评论 -
OpenCV学习——绘制图像灰色直方图
一、环境OpenCV3.4.1VS2015二、代码#include <opencv2/opencv.hpp>using namespace std;#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")#define cvQueryHistValue_1D( hist...原创 2018-11-28 23:36:06 · 424 阅读 · 0 评论 -
opencv将图像转换成二维数组再将数组数据传给新图像
话不多说,直接上代码:#include<iostream>#include<fstream>#include "cv.h"#include "highgui.h" using namespace std; int main(int argc, char** argv){ cout << "进入系统----------->"原创 2018-11-20 22:58:57 · 1865 阅读 · 1 评论 -
OpenCV像素二位数组数据(矩阵)生成图片
刚开始接触到OpenCV,本身是想学借助OpenCV的库来进行图像处理学习的,后来发现OpenCV将所有的东西都集成起来了,对于打算学习图像处理来说这样反而不是什么好事; 在我看来,图像处理基本基于对像素值的处理,那么我们尽可能的用数组来存储像素值,对于OpenCV来说不便于按照我们的做法来对图片进行处理。但是OpenCV给我们集成了cv::Mat::at这样一个结构,用于读取图...原创 2018-11-20 22:29:59 · 4278 阅读 · 0 评论 -
OpenGL和OpenCV的区别
OpenCV/OpenCL/OpenGL区别与联系:区别OpenGL(Open Graphics Library,开放图像库)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenG...原创 2018-10-17 20:51:52 · 6740 阅读 · 0 评论 -
OpenCV实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
惯例效果震楼 效果没有想象的好,但也勉强够看了,代码如下: #include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/core/core.hpp>using namespace cv;in...原创 2018-09-03 15:44:15 · 501 阅读 · 0 评论