随笔分类 -  opencv笔记

摘要:在深度学习中,模型的输入size通常是正方形尺寸的,比如300 x 300这样.直接resize的话,会把图像拉的变形.通常我们希望resize以后仍然保持图片的宽高比. 例如: 如果直接resize到的话: 而我们希望得到: 可以利用 "copyMakeBorder" 和resize配合达到我们的 阅读全文
posted @ 2019-11-28 14:29 core! 阅读(1749) 评论(0) 推荐(1) 编辑
摘要:形态变换 在 "opencv之膨胀与腐蚀" 中介绍了Dilation/Erosion的原理.建议先读这一篇,搞懂原理. 这样就可以很轻松地理解为什么本文的这些形态变换可以取得相应的效果. 基于此,我们可以组合出更多的形态变换以达到不同的目的. 有以下几种: Opening Closing Morph 阅读全文
posted @ 2019-10-15 14:07 core! 阅读(835) 评论(1) 推荐(4) 编辑
摘要:腐蚀和膨胀 Erosion/Dilation erosion/dilation,用白话说,就是让图像亮的区域收缩和扩张. 原理 我们定义一个卷积核矩阵.这个矩阵可以是任何形状的,但通常而言,是矩形或者圆形的.同时要定义一个锚点位置. 用这个卷积核矩阵挨个地划过原始图像矩阵,同时更改锚点位置的像素值. 阅读全文
posted @ 2019-10-14 16:52 core! 阅读(5531) 评论(1) 推荐(6) 编辑
摘要:我们经常会有对图像边缘做扩展的需求.比如 希望卷积后得到的矩阵大小不变 希望改变图像大小,但是不改变宽高比 opencv实现 opencv中使用copyMakeBorder()来完成这一功能 "api" src是原图像矩阵 dst是新图像矩阵 top/bottom/left/right是边界扩展的大 阅读全文
posted @ 2019-10-09 18:13 core! 阅读(2188) 评论(0) 推荐(1) 编辑
摘要:霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有理解的很清楚,又不去读算法实现的源码,写的云山雾罩的,越看越懵逼. 霍夫变换本身的思路是很简明的. 阅读全文
posted @ 2019-10-01 21:41 core! 阅读(1706) 评论(2) 推荐(4) 编辑
摘要:canny canny的目标有3个 低错误率 检测出的边缘都是真正的边缘 定位良好 边缘上的像素点与真正的边缘上的像素点距离应该最小 最小响应 边缘只能标识一次,噪声不应该标注为边缘 canny分几步 滤掉噪声 比如高斯滤波 计算梯度 比如用索贝尔算子算出梯度 非极大值抑制 上一步算出来的边缘可能比 阅读全文
posted @ 2019-09-30 20:18 core! 阅读(6469) 评论(0) 推荐(3) 编辑
摘要:"sobel算子一文" 说了,索贝尔算子是模拟一阶求导,导数越大的地方说明变换越剧烈,越有可能是边缘. 那如果继续对f'(t)求导呢? 可以发现"边缘处"的二阶导数=0. 我们可以利用这一特性去寻找图像的边缘. 注意有一个问题,二阶求导为0的位置也可能是无意义的位置 拉普拉斯算子推导过程 以x方向求 阅读全文
posted @ 2019-09-30 13:52 core! 阅读(4977) 评论(1) 推荐(4) 编辑
摘要:人眼怎么识别图像边缘? 比如有一幅图,图里面有一条线,左边很亮,右边很暗,那人眼就很容易识别这条线作为边缘.也就是 像素的灰度值快速变化的地方 . sobel算子 对于f(t),其导数f'(t)反映了每一处的变化趋势.在变化最快的位置其导数最大. sobel算子的思路就是模拟求一阶导数. sobel 阅读全文
posted @ 2019-09-29 17:46 core! 阅读(13898) 评论(0) 推荐(9) 编辑
摘要:图像平滑 Smoothing, also called blurring, is a simple and frequently used image processing operation. 平滑,也叫模糊. 本质就是把某点的像素值转换为其及其周围像素值的不同权重的叠加.h(k,l)即为卷积核, 阅读全文
posted @ 2019-09-27 22:55 core! 阅读(11312) 评论(5) 推荐(2) 编辑
摘要:Mat Mat由两部分构成 matrix header pointer to the matrix containing the pixel values Mat is basically a class with two data parts: the matrix header (contain 阅读全文
posted @ 2019-09-27 15:13 core! 阅读(606) 评论(0) 推荐(1) 编辑
摘要:图像处理 图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵. 可以分为两种方式,即像素级别的变换和区域级别的变换 Point operators (pixel transforms) Neighborhood (area based) operators 像素级别的变换就相 阅读全文
posted @ 2019-09-27 13:41 core! 阅读(9900) 评论(0) 推荐(4) 编辑
摘要:今天在做数据增强的时候,遇到一个奇怪的问题.调用imwite生成的图片,在本地用图片查看器打开的时候是正常的.但是在代码里imshow的时候是一片亮白. 代码类似如下 上面效果类似 不管imwrite传入的矩阵的类型是什么样的(float32或者uint8),imwrite都会把它转换成0(blac 阅读全文
posted @ 2019-08-20 11:35 core! 阅读(353) 评论(0) 推荐(0) 编辑
摘要:仿射变换,其实就是不同的坐标系的相互转换,用于图像的平移和旋转. 首先看一下官方的api描述. 先从图像平移说起,假如说我们想把图像向右平移5个像素,即(0,0) (5,0),(100,100) (105,100),更一般地表达即(x,y) (x+5,y),其中x,y为坐标系中的某一个像素的位置. 阅读全文
posted @ 2019-08-19 17:35 core! 阅读(2252) 评论(0) 推荐(0) 编辑
摘要:error: src dir /opencv 2.4.10/modules/highgui/src/window.cpp:501: error: ( 2) The function is not implemented. Rebuild the library with Windows, GTK+ 阅读全文
posted @ 2019-08-19 11:02 core! 阅读(2762) 评论(0) 推荐(1) 编辑
摘要:直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均衡化作用:用来增强对比度. 这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度 阅读全文
posted @ 2019-08-09 17:01 core! 阅读(3860) 评论(0) 推荐(1) 编辑
摘要:整个项目源码:GitHub引言前面我们讲完交通标志的识别,现在我们开始尝试来实现交通信号灯的识别 接下来我们将按照自己的思路来实现并完善整个Project. 在这个项目中,我们使用HSV色彩空间来识别交通灯,可以改善及提高的地方:可以采用Faster RCNN或SSD来实现交通灯 阅读全文
posted @ 2019-08-07 20:07 core! 阅读(5822) 评论(1) 推荐(1) 编辑
摘要:个人笔记 长期更新 Opencv和PIL格式之间互转 PIL读取的是rgb order. cv是bgr order. from PIL to Opencv import cv2 import numpy as np from PIL import Image pil_image=Image.open 阅读全文
posted @ 2019-07-30 17:26 core! 阅读(215) 评论(0) 推荐(0) 编辑
摘要:转: 1、创建 Mat 对象: // 创建一个 320x240 的 8 位无符号型 4 通道全 0 的 Matcv::Mat mBGRAImg = cv::Mat::zeros(320, 240, CV_8UC4); // 创建一个 320x240 的 8 位无符号型 1 通道全 0 的 Matcv 阅读全文
posted @ 2019-07-23 14:18 core! 阅读(3357) 评论(0) 推荐(0) 编辑
摘要:理论 http://www.cnblogs.com/wangguchangqing/p/4045150.html 翻开任意一本图像处理的书,都会讲到图像的几何变换,这里面包括:仿射变换(affine transformation)、投影变换(projecttive transformation)。前 阅读全文
posted @ 2019-05-21 15:15 core! 阅读(888) 评论(0) 推荐(0) 编辑