opencv
文章平均质量分 66
Souseiki
心里有座坟。。。
展开
-
opencv学习笔记(二)—显示图像
这是学习opencv的第一个程序,先上程序#include "highgui.h"int main(){ IplImage* img = cvLoadImage("C:\\Users\\SARS\\Pictures\\社会实践\\7dc9a993gx6BCgOUQC96d&690.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);原创 2015-09-01 22:14:29 · 1243 阅读 · 1 评论 -
opencv学习笔记(十八)——图像非线性滤波
非线性滤波非线性滤波是原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,而线性滤波采用的是算术运算结果。中值滤波(Median filter)中值滤波介绍中值滤波是一种典型的非线性滤波技术,基本思想就是用像素点邻域灰度值得中值来代替该像素点的灰度值。常用在脉冲噪声,椒盐噪声的同时又能保留图像边缘细节。优点:减小噪声在滤波中的影响,从而达到更好的滤波效果,同时还能更好地保留边缘细节。缺点:耗时更原创 2015-11-15 19:52:35 · 2450 阅读 · 0 评论 -
opencv学习笔记(十五)——图像融合
一、ROI区域图像叠加&图像混合ROI区域:设置感兴趣区域(region of interest); 使用ROI区域可以减少处理时间,增加精度。1,创建ROI区域方法一:使用表示矩阵区域Rect,它指定左上角坐标和矩阵的长和宽;Mat imageROI;imageROI = image(Rect(200, 200, logo.cols, logo.rows));方法二:指定感兴趣行或列的范围(R原创 2015-10-24 17:05:52 · 3802 阅读 · 0 评论 -
opencv学习笔记(十二)——基础应用
这一节主要实现opencv的一些基础应用,如创建滑动条,以及控制鼠标操作等。一、滑块条的创建滑块条常用来动态调节参数。它需要依附窗口而存在。1,函数介绍:创建滑块条:createTrackbar()2,例程:原创 2015-10-15 12:45:56 · 587 阅读 · 0 评论 -
opencv学习笔记(十九)——图像滤波综合运用实例
#include<opencv2/opencv.hpp>cv::Mat Source_Image,BoxFilter_Image, MeanBlur_Image, GaussianBlur_Image, MedianBlur_Image, BilateralFilter_Image;int g_BoxFilter; //方框滤波参数int g_MeanBlur; /原创 2015-11-16 20:00:27 · 915 阅读 · 0 评论 -
opencv学习笔记(十六)——图像对比度和亮度值
一、理论分析对于图像亮度和对比度的调整主要是加上或者乘上一个常数,理论公式如下:g(x,y)<c> = a*f(x,y)<c>+bf(x,y)< c >代表源图像第x行,第y列像素点第c通道的值g(x,y)< c>代表输出图像第x行,第y列像素点第c通道的值a(a>0)通常称为增益(放大倍数),用来控制图像的对比(为了观察结果,一般设置为0.0到3.0之间)b通常被称为偏置,用来控制图像的亮原创 2015-10-30 18:00:02 · 5294 阅读 · 0 评论 -
opencv学习笔记(十七)——线性滤波
图像滤波:图像滤波:指尽量在保存图像细节特征的条件下对目标图像的噪声进行抑制。图像滤波的目的:一是抽出对象的特征作为图像识别的特征模式;二是消除图像中混入的噪声。图像滤波的要求:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。滤波和模糊的区别:拿高斯滤波来举例:滤波一般可以分为高通滤波和低通滤波,对于高斯低通滤波就会产生模糊效果,如果对于高斯高通滤波就会产生锐化的效果。所以原创 2015-11-14 17:34:49 · 6011 阅读 · 0 评论 -
opencv学习笔记(二十一)——阈值操作
阈值化:最简单的图像分割方法应用举例:从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。阈值操作介绍:二进制阈值化阈值化类型如下式所示: 解释:在运用该阈值类型的时候,先要选定一个特定的阈值量,比如:125,这样,新的阈值产生规则可以解释为大于125的像素点的灰度值设定为最大值原创 2015-11-22 10:52:44 · 4923 阅读 · 0 评论 -
opencv学习笔记(二十)——形态学滤波
开运算处理过程:先腐蚀后膨胀。 功能:用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。 使用实例:#include<opencv2/opencv.hpp>void main(){ cv::Mat image = cv::imread("腐蚀膨胀练习1.jpg"); cv::namedWindow("SourceIm原创 2015-11-17 15:14:07 · 14239 阅读 · 3 评论 -
opencv学习笔记(二十二)——驱动双摄像头
问题描述:驱动双目摄像头——这是我研究双目视觉系统的第一步,俗话说万事开头难,我这第一步搞得真是头破血流啊,终于在我百般努力下驱动起这个双目摄像头了。在驱动的过程中,我发现当我们驱动多个摄像头时,opencv传统的摄像头驱动方式只能同时打开型号不同的摄像头(例如电脑内置摄像头和USB外置摄像头),而驱动两个相同的摄像头(也就是我使用的双目摄像头)时,我们在程序中打开的第一个摄像头能够正常运行,而第二原创 2016-01-07 18:38:22 · 7614 阅读 · 5 评论 -
opencv学习笔记(二十五)——实现相机拍照功能
由于相机标定需要多张棋盘照片,所以写了一个相机拍照程序。主要原理是:创建一个滑块,当作相机的快门,然后通过一个回调函数保存窗口的图片。 源代码如下:#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) //掩藏控制台#include<iostream>#include <fstream>原创 2016-03-02 14:17:35 · 6016 阅读 · 1 评论 -
opencv学习笔记(二十六)——相机标定之棋盘提取角点
本例程是相机标定的第一步,通过findChessboardCorners找到棋盘上的所有角点,然后再通过调用cornerSubPix亚像素精确化,找到精确的角点坐标,然后调用circle画出角点位置。主要函数介绍:findChessboardCorners()功能:寻找棋盘图的内角点位置函数形式:int cvFindChessboardCorners( const void* image, Cv原创 2016-03-03 19:27:18 · 20240 阅读 · 15 评论 -
opencv学习笔记(二十三)——相机标定原理详解
一、四个坐标系统1. 四个坐标系简介:世界坐标系(Xw,Yw,Zw):也称真实或现实世界坐标系,或全局坐标系。它是客观世界的绝对坐标,由用户任意定义的三维空间坐标系。一般的3D场景都用这个坐标系来表示。摄像机坐标系(xoy):以小孔摄像机模型的聚焦中心为原点,以摄像机光轴为oz 轴建立的三维直角坐标系。x,y 一般与图像物理坐标系的X,Y平行。图像物理坐标系:其原点为透镜光轴与成像平面的交点,原创 2016-01-24 19:42:07 · 5153 阅读 · 0 评论 -
opencv学习笔记(二十四)——相机标定板制作
这里采用了的一个opencv程序制作了相机标定板:#include "cv.h"#include "highgui.h"#include "cxcore.h"//隐藏控制台窗口#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")int main(int argc, char*argv[]){原创 2016-02-27 20:20:25 · 8867 阅读 · 0 评论 -
opencv学习笔记(十一)——图像的载入,显示和输出到文件
说明说明一下,之前的opencv学习基本是在opencv1.0的基础下学习的,在这节以后的都是基于opencv2.X下的学习。参考的是浅墨大神的《opencv3编程入门一书》。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 在OpenCV2.X中写程序的标准三原创 2015-10-12 12:41:10 · 7714 阅读 · 0 评论 -
opencv学习笔记(十一)——图像腐蚀和膨胀混合运用练习
图像腐蚀和膨胀混合运用经常应用在图像去噪,和骨架提取等场合。接下来的例子是运用图像腐蚀和膨胀进行去噪的例程: 简单的图像去噪过程就是:先对图像进行腐蚀,然后再进行膨胀。 代码如下:#include "cv.h"#include "highgui.h"void main(){ IplImage *src = cvLoadImage("G:\\Opencv\\素材\\腐蚀膨胀练习1.jp原创 2015-10-11 17:56:19 · 836 阅读 · 0 评论 -
opencv学习笔记(四)-视频播放控制
网上有很多关于用Cmake将opencv代码生成一个VS工程的方法查看opencv的源代码,但是我感觉这样打开源代码会让电脑很卡(不知道是不是我电脑的配置太低还是什么个情况),所以我就用Source_Insight这个工具来查看代码。使用教程在下面: 一、安装: 首先去找一个Source_Insight下载安装,但它是收费的,不过生在我们大天朝的人怎么会为收费工具而烦恼呢,所以你懂得,,, 安原创 2015-09-04 13:01:33 · 1485 阅读 · 0 评论 -
opencv学习笔记(三)-读取视频与摄像头
下面是一个播放AVI视频的一个程序 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "highgui.h"int main(){ cvNamedWindow("Example2", 0); /*读视频文件*/ CvCapt原创 2015-09-03 15:10:28 · 1686 阅读 · 0 评论 -
使用Source_Insight查看opencv源代码
网上有很多关于用Cmake将opencv代码生成一个VS工程的方法查看opencv的源代码,但是我感觉这样打开源代码会让电脑很卡(不知道是不是我电脑的配置太低还是什么个情况),所以我就用Source_Insight这个工具来查看代码。使用教程在下面: 一、安装: 首先去找一个Source_Insight下载安装,但它是收费的,不过生在我们大天朝的人怎么会为收费工具而烦恼呢,所以你懂得,,, 安原创 2015-09-03 18:52:16 · 3429 阅读 · 0 评论 -
opencv学习笔记(六)-平滑处理图像
这是一个简单的变换,对图像进行平滑处理,程序如下: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "cv.h"#include "highgui.h"void Mysmooth(IplImage* image){ cvNamedWin原创 2015-09-05 11:20:12 · 754 阅读 · 0 评论 -
opencv学习笔记(五)-将图片写成视频
这次我要用opencv把一堆图片合成一个avi的视频,图片素材可以自己用KMPlayer制作,程序如下: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "cv.h"#include "highgui.h"int main(){ CvS原创 2015-09-04 22:15:27 · 3570 阅读 · 1 评论 -
opencv学习笔记(八)-IplImage数据结构
IplImage介绍typedef struct _IplImage{ int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; /* Most of OpenCV functions support 1,2原创 2015-09-11 18:19:30 · 2410 阅读 · 0 评论 -
opencv学习笔记(七)-CvMat矩阵结构以及矩阵数据访问
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 首先说一下对矩阵维度和通道的理解: 维:体现为坐标。 通道: 对于这样一个数组矩阵:float data[18] = { 30, 60, 40, 60, 50, 40,原创 2015-09-06 19:01:06 · 7577 阅读 · 1 评论 -
opencv学习笔记(十三)——数据结构
一、基础图像容器Mat1.1Mat介绍Mat是用来储存数字图像的一个类。它是IplImage的升级。Mat相对于IplImage最大的优点就是:不用手动开辟和释放图像内存,Mat能够自动管理内存。 Mat是一个类。包含两个数据部分:(1)矩阵头(包含矩阵尺寸,储存方法、存储地址等信息);(2)一个指向储存所有像素值的矩阵(根据所储存方法的不同,矩阵可以是不同的维数)的指针。 为了提高Opencv原创 2015-10-16 17:56:18 · 771 阅读 · 0 评论 -
编译opencv程序错误调试集合
持续更新中……++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1,提示:Debug Assertion Failed! 由于调试可以知道,程序是在这句出错的:cvReleaseImage(&img); //释放图像指针内存所以这个错误是指:释放内存是出原创 2015-09-02 09:24:45 · 2025 阅读 · 0 评论 -
cvCreateImage和cvCreateImageHeader等函数的区别
1,如果是从新创造一个Iplimage,则用IplImage* cvCreateImage( CvSize size, int depth, intchannels ),它创建头并分配数据。注:当不再使用这个新图像时,要调用void cvReleaseImage( IplImage** image )将它的头和图像数据释放!2,如果有图像数据没有为图像头分配存储空间(即,没有为IplImage*指针转载 2015-09-16 10:22:30 · 1171 阅读 · 0 评论 -
opencv学习笔记(九)-灰度直方图
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 灰度直方图的定义直方图(Histogram)又称柱状图、质量分布图,是一种统计报告图。直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。在图像处理上,直方图是原创 2015-09-13 13:49:38 · 914 阅读 · 0 评论 -
opencv学习笔记(十四)——图像像素的访问
方法一:使用指针遍历每个像素点:#include <opencv2/opencv.hpp>using namespace cv;void colorReduce(Mat inputImage, Mat outputImage, int div){ outputImage = inputImage.clone(); int rowNumber = outputImage原创 2015-10-23 17:53:11 · 729 阅读 · 0 评论 -
opencv学习笔记(十)-图像腐蚀与腐蚀
相关概念:腐蚀:删除对象边界某些像素。结构元素设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++腐蚀原创 2015-09-23 11:26:27 · 7544 阅读 · 3 评论 -
opencv学习笔记(一)-软件安装及环境配置
参考博客:http://www.cnblogs.com/cuteshongshong/p/4057193.html使用的编译器是VS2013,opencv使用的是opencv2.49; 以下的方法是只需配置一次工程,之后新建opencv工程就不需要配置了。1,设置opencv SDK解压目录,点击Extract后解压,我习惯把软件安在D盘; 2、 文件目录介绍 解压后会在目录下生成open原创 2015-09-01 21:32:36 · 2951 阅读 · 0 评论