Opencv 笔记

路径问题:

路径输入:Opencv载Qt中不能出现汉字,路径也不能出现汉字在vs中可以出现。

(”D:/QTopencv/.1jpg”)=(”D:\\QTopencv\\.1jpg”)

形态学函数操作;

Mat element = getStructuringElement( erosion_type, Size( 2*erosion_size + 1, 2*erosion_size+1 ), Point( erosion_size, erosion_size ) );

Erode( I,I1,element)

I:原始图像,I1腐蚀后图像;

Erosion_type(腐蚀类型,MORPH—形态学)

矩形:MORPH_RECT

交叉形:MORPH_CROSS

椭圆:MORPH_ELLIPSE

空间颜色转换:

cvtclolor(原始图像,转换后图像,转换类型);

blurl滤波

blur(InputArray src,OutputArray dst,Size ksize,Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )
src:输入图像

dst:输出图像

ksize: 模糊核的大小

常用函数;

Mat srcImage =
imread("C:/Users/Administrator/Desktop/车牌识别/车牌图像库/1.jpg");//读入图像函数

imshow("原图",srcImage);//显示图像函数

imwrite("图3.jpg",imageRIO);//保存图像函数

Mat imageRIO =
srcImage(Rect(50,50,100,000));//感兴趣区域函数

cvtColor(srcImage,dstImage,CV_BGR2GRAY);//图像灰度化

//边缘检测 Sobel
Laplacian Canny 其中Canny算子只能处理(8位)灰度图,其余两种8位32位都可以

Mat grad_x,grad_y;

Sobel(imgGray,grad_x,CV_8U,1,0,3,1,1);//X方向上的Sobel算子检测,其中3,1,0都是默认值

Sobel(imgGray,grad_y,CV_8U,0,1,3,1,0);//Y方向上的Sobel算子检测,其中3,1,0都是默认值

addWeighted(grad_x,0.5,grad_y,0.5,0,dstImage);//合并梯度

Laplacian(imgGray,dstImage,CV_8U);

Canny(imgGray,dstImage,50,200,3);//50和200表示第一个滞后性阈值和第二个滞后性阈值,较小者用于边缘连接,较大者控制强边缘的初始段,达阈值opnecv推荐为小阈值的3倍;

//3表示应用的Sobel算子的孔径大小
有默认值为3;

// 寻找轮廓 只处理8位
即灰度图像

vector<vector<Point>> contours;

findContours(imgGray,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);

drawContours(dstImage,contours,-1,Scalar(0),3);

imshow("轮廓图",dstImage);

//阈值化操作

threshold(srcImage,dstImage,100,255,3);

imshow("固定阈值化图像",dstImage);

adaptiveThreshold(imgGray,dstImage,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,3,1);

imshow("自适应阈值化图像",dstImage);

// resize函数实现

resize(srcImage,dstImage,Size(),0.5,0.5);//缩小为一半

resize(srcImage,dstImage,Size(),2,2);//放大2倍

resize(srcImage,dstImage,Size(srcImage.cols*3,srcImage.rows*3));//放大3倍

// 金字塔函数实现

pyrUp(srcImage,dstImage,Size(srcImage.cols*2,srcImage.rows*2));//
放大2倍

pyrDown(srcImage,dstImage,Size(srcImage.cols/2,srcImage.rows/2));//
缩小2倍

//漫水填充算法

Rect ccomp;

floodFill(srcImage,Point(50,300),Scalar(155,255,55),&ccomp,Scalar(20,20,20),Scalar(20,20,20));

//膨胀腐蚀

Mat element =
getStructuringElement(MORPH_RECT,Size(15,15));

erode(srcImage,dstImage,element);//腐蚀函数

dilate(srcImage,dstImage,element);//膨胀函数

morphologyEx(g_bgrImage,g_bgrImage,
MORPH_CLOSE, element);//闭运算

morphologyEx(g_bgrImage,g_bgrImage,
MORPH_OPEN, element);//开运算

//滤波

boxFilter(srcImage,dstImage,-1,Size(3,3));

imshow("方框滤波图",dstImage);

blur(srcImage,dstImage,Size(3,3));

imshow("均值滤波图",dstImage);

GaussianBlur(srcImage,dstImage,Size(5,7),1,1);

imshow("高斯滤波图",dstImage);

medianBlur(image,out,7);//中值滤波,7为孔径的线性尺寸

bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);//双边滤波,d表示过滤过程中每个像素邻域的直径,sigmaColor颜色空间滤波器的sigma值,sigmaSpace表示坐标空间中滤波器的sigma值

bilateralFilter(image,out,25,25*2,25/2);

背景问题

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 湖蓝色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色
system("color 02");比如这个就是黑底绿字

创建矩阵

Mat scrImmage, dstImage;//原始图像,

1、dstImage. create(srcImage .rows,  srcImage .cols, srcImage. type());

2、dstImage = Mat::zeros(srcImage.size(), srcImage.type());

3、dstImage=srcImage.clone();

效果的大小,类型与原图像相同;

创建滑动条

creatTrackbar(const string&
trackbarname, const string &winname, int *value ,int count,TrackbarCallback
onChange=0,void* userdata=0)

1、第一个参数轨迹条名字,

2、第二个参数窗口名字

3、int性的指针,一个指向整型的指针,表示滑块位置。在创建时滑块的初始位置就是该变量的值。

4、第四个参数int*类型的count,表示滑块可以达到的最大位置,滑块最小位置始终为0;

opencv 学习笔记的更多相关文章

  1. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  2. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  3. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  4. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

  5. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

  6. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  7. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  8. paper 93:OpenCV学习笔记大集锦

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  9. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

  10. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

随机推荐

  1. js样式之渐变线

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. [python,2018-01-15] 冒泡法排序

    想写一个冒泡法排序,没什么思路,就先写了个java的 public static void main(String[] args) { int array[] = {88,2,43,12,34,8,6 ...

  3. qtftp 客户端

    今天上午看了看FTP网络,但是当添加头文件时发现qt creater并不包括此头文件,于是找了一下资料发现:在QT5上将QFtp去掉了,建议使用QNetworkAccessManager,但是后者并没 ...

  4. Python模块学习 - jinja2

    模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中 ...

  5. Robot Operating System (ROS)学习笔记2---使用smartcar进行仿真

    搭建环境:XMWare  Ubuntu14.04  ROS(indigo) 转载自古月居  转载连接:http://www.guyuehome.com/248 一.模型完善 文件夹urdf下,创建ga ...

  6. NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation)

    NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation) NEU:通过对高阶相似性的近似,加持快速网络 ...

  7. 转载:approxPolyDP函数

    本文转载http://blog.csdn.net/qq_18343569/article/details/47999257 1.approxPolyDP函数 函数的作用: 对图像轮廓点进行多边形拟合 ...

  8. 转载 :实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)

    在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然Q ...

  9. HTML5 Canvas 小例子 简易画板

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Ubuntu下无法使用Secure_CRT连接服务器

    虚拟机使用 1 .指令安装了SSH服务器 sudo apt-get install openssh-server 2. 输入命令 ps | grep ssh 查看SSH服务是否开启 显示服务已开启 3 ...