opencv 学习笔记
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 学习笔记的更多相关文章
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- paper 93:OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
随机推荐
- js保留两位小数点
var temp = 2.222222222; temp.toFixed(2); //得出结果2.22
- 获取cookie后,使用cookie进行接下来的自动化操作
System.setProperty("javax.net.ssl.trustStore", certPath); public void uploadComponent() th ...
- 关于SqlServer2008小记(查询数据库连接数,强行干掉连接)
查询连接数 select count(*) from master.dbo.sysprocesses 这条语句查出来的是所有连接到本机(或者连接到本服务器)的连接数,并非是某一个库的连接数. 查询连接 ...
- 什么时候删除指针后,要给指针赋NULL
删除后需要赋NULL: 1.当在一个类里的时候,删除类的某个成员对象,需要给它赋NULL,以防其他地方使用这个成员的时候,不知道这个成员是否存在 eg: ref1::ref1() { tPint = ...
- uiautomator2.0的配置的两种方法
方法一(使用在线下载的方式导入依赖): 1.首先创建项目工程,创建的项目的android_api版本要与测试的android_api版本一致(24就是24 ,不能26或者17去兼容) 2.然后就是将本 ...
- Faster RCNN原理分析(二):Region Proposal Networks详解
Faster RCNN原理分析(二):Region Proposal Networks详解 http://lib.csdn.net/article/deeplearning/61641 0814: A ...
- Linux将某目录授权给某组里的某用户
chown -Rf 用户名:组名 目录
- 【转】Intro to ShockBurst/Enhanced ShockBurst
原地址https://devzone.nordicsemi.com/b/blog/posts/intro-to-shockburstenhanced-shockburst Wireless PC ac ...
- 功能测试-UI测试思考点
界面是否美观 元素大小 界面元素是否对齐方式统一 界面字体属性是否正确 界面链接及触发动作( 链接的地址是否正确,不允许存在死链的情况 链接打开方式,当前页面还是新开页面 鼠标点击后的颜色是否美观,不 ...
- react-native ios打包 、设置图标 启动图片
在这里只记录xcode 打包操作,申请证书操作,之前已经记录过了. https://www.cnblogs.com/hellovoidworld/p/4127576.html 参考了这篇文章,只是可 ...