1.vc++配置opencv

2.简单常用的图片处理函数

3.图像修复函数

opencv的项目以来配置和环境变量的配置都很简单,对于我这个没有c++基础的来说,复杂的是opencv的api和一些大部分来自国外没有翻译的资料,以及一些常见的编码问题。

资料

opencv 中文api

博客园tornadomeet的opencv学习笔记

opencv安装目录详解

opencv安装完成后并配置好vc++项目后,先不要急着去按照书本上的例子打代码,这里 我们介绍一下opencv的安装目录,目录中有很详尽的功能解决方案,可以让我们在快速学习或项目时可以很方便找到相应功能的大体实现思路,所以了解opencv的安装目录,会加快我们学习的进度和对整体逻辑的理解。

下面简单介绍一下opencv的安装目录,以opencv2.4.13为例

opencv的安装根目录,其中build文件夹为配置项目时的依赖文件,这里在配置时,用处有大体的了解

以上是build文件夹中的文件

doc:生成文档所需的源文件以及辅助脚本

include:opencv引用的源码

java、python:java、python的引用文件

shard:opencv公用的数据文件,xml格式

x64、x86:不通系统下的依赖文件(32、64位操作系统)

以上文件是sources文件夹中的文件,是在opencv中比较有趣和让人兴奋的一部分。

3rdparty:包含第三方的库,比如视频解码用的 ffmpeg,jpg、png、tiff等图片的开源解码库。

apps:包含进行 haar 分类器训练的工具,opencv 进行人脸检测便是基于 haar 分类器。如果你想检测人脸以外的图片,千万不要错过这几个工具。

cmake:包含生成工程项目时 cmake 的依赖文件,用于智能搜索第三方库,普通开发者不需要关心这个文件夹的内容。

data:包含 opencv 库以及范例中用到的资源文件,haar 物体检测的分类器位于haarcascades子文件中。

doc:包含生成文档所需的源文件以及辅助脚本。

include:源码文件夹

modules:核心模块源码

platforms:包含交叉编译所需的工具链以及额外的代码,交叉编译指的是在一个操作系统中编译供另一个系统使用的文件。

samples:这个是我最喜欢的一个文件夹了,里面是代码的示例。

opencv图像处理

1.打开图片

//声明IplImage指针
IplImage * pImg;
//判断载入图像是否成功
if(pImg = cvLoadImage("image url",0/1/-1)!=0){//创建窗口cvNamedWindow("Image",1);//显示图像cvShowImage("Image",pImg);//等待按键cvWaitKey(-1);//销毁窗口cvDestoryWindow("Image");//释放图像cvReleaseImage(&pImg);
}

使用函数及参数说明:

cvLoadIamge(fileName,flags);   fileName:要被读入的文件的文件名(包括后缀) flags:读入图像的颜色和深度(flags=-1默认图像的原通道;flags=0强制转化为灰度图像;flags=1读取色彩图)

cvNamedWindow(windowName,flags);windowName:表示创建的窗口名称;flags:窗口属性(flags=0用户可以手动更改图像尺寸;flags=1用户不可编辑图像尺寸)

cvWaitKey(delay);函数的功能是不断刷新图像,频率时间为delay,单位为ms。

cvDestroyWindow(windowName);销毁指定名字的窗口。windowName:被销毁的窗体名称

cvReleaseImage(image);释放图像资源

2.拷贝保存图像

    //打开图像IplImage* pImg = createImage();//根据打开的图像创建图像IplImage * pImg2 = cvCreateImage(cvGetSize(pImg), pImg->depth, pImg->nChannels);//拷贝图像
    cvCopy(pImg, pImg2, NULL);//设置该图像保存目录cvSaveImage("image uri", pImg2);//释放该图片资源cvReleaseImage(&pImg2);

使用函数及参数说明:

cvCopy:拷贝一个数组给另一个数组。

cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL )

src:输入数组。
dst:输出数组。
mask:操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。

3.图像缩放

    //声明两个图片指针IplImage* src = 0;//源图IplImage* dst = 0;//新图float scale = 0.218;//缩放比例    取值0~1  源图比例为1CvSize dst_cvsize;  //新图尺寸//判断路径图片是否存在 并赋值给src对象if ((src = cvLoadImage("E:\\tiger.jpg")) != 0){//根据scale参数设置新图宽高dst_cvsize.width = src->width * scale;dst_cvsize.height = src->height * scale;//以dst_cvsize 创建图片 并指向新图指针dst = cvCreateImage(dst_cvsize, src->depth, src->nChannels);//缩放源图至目标图
        cvResize(src,dst,CV_INTER_LINEAR);//创建图像窗口cvNamedWindow("src image window",CV_WINDOW_AUTOSIZE);cvNamedWindow("dst image window", CV_WINDOW_AUTOSIZE);//显示两张图片cvShowImage("src image window",src);cvShowImage("dst image window", dst);//等待用户响应cvWaitKey(-1);//释放指针内存cvReleaseImage(&src);cvReleaseImage(&dst);//销毁所有窗口资源cvDestroyAllWindows();

使用函数及参数说明:

cvResize:重新调整图像src(或它的ROI),使它精确匹配目标dst(或其ROI)。这里需要说明的是,cvResize可以用来调整3通道图像(如RGB图像)和单通道图像的大小。

cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR )

src: 源图像
dst :目标图像
interpolation 修改、插补的方法,取值如下:
·CV_INTER_NN - 最近-邻居插补
·CV_INTER_LINEAR - 双线性插值(默认方法)
·CV_INTER_AREA - 像素面积相关重采样。当缩小图像时,该方法可以避免波纹的出现。当放大图像时,类似于方法CV_INTER_NN。(It is the preferred method for image decimation that gives moire-free results. In case of zooming it is similar to CV_INTER_NN method. )
·CV_INTER_CUBIC -双三次插值

alpha混合 透明度

  IplImage*src1, *src2;if ((src1 = cvLoadImage("image1 url", 1)) != 0 && (src2 = cvLoadImage("image2 url", 1)) != 0){int x = 20;int y = 20;int width = 200;int height = 200;double alpha = 0.9;double beta = 0.1;cvSetImageROI(src1, cvRect(x, y, width, height));cvSetImageROI(src2, cvRect(x, y, width, height));cvAddWeighted(src1, alpha, src2, beta, 0.0,src1 );cvResetImageROI(src1);cvNamedWindow("alpha_blend", 1);cvShowImage("alpha_blend", src1);cvWaitKey();}

使用函数及参数说明:

cvAddWeighted:分割多通道数组成几个单通道数组或者从数组中提取一个通道。

cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst );

各个变量的意义:
src1 //第一个原数组. 
  alpha //第一个数组元素的权值 
  src2 //第二个原数组 
  beta //第二个数组元素的权值 
  dst //输出数组 
  gamma //添加的常数项。 
  函数 cvAddWeighted 计算两数组的加权值的和: 
  dst(I)=src1(I)*alpha+src2(I)*beta+gamma 
  所有的数组必须有相同的类型相同的大小(这里是在学习时比较不易懂的地方,我理解其意思是,在操作的两个原数组的属性融合时,其值的和要和单一原数组的属性值相等,否则将会抛出异常)。

代码解读:

1.声明两个图像指针,通过cvLoadImage函数为其指定图片路径,并判断其图片读取合法性。

2.cvSetImageTOI函数标定cvRect函数所指定的坐标大小区域。

3.针对于操作区域进行图像的融合。

4.显示图像。

转载于:https://www.cnblogs.com/z-yue/p/5725882.html

opencv 简单、常用的图像处理函数(2)相关推荐

  1. 几种常用的图像处理函数库

    from:http://www.wtoutiao.com/p/18a4MqP.html 几种常用的图像处理函数库 OpenCV OpenCV的全称是:Open Source Computer Visi ...

  2. Opencv的使用小教程2——Opencv常用图像处理函数汇总

    Opencv的使用小教程2--Opencv常用图像处理函数汇总 1.blur 2.GaussianBlur 3.medianBlur 4.bilateralFilter 5.腐蚀和膨胀 6.morph ...

  3. 对OpenCV、计算机视觉、图像处理的简单介绍

    OpenCV简介: OpenCV的最初是CV是"computer vision"的缩写,"computer vision"即计算机视觉.它由1999年英特尔建立 ...

  4. 【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)

    目录 1.点的表示:Point类 2.颜色的表示:Scalar类 3.尺寸的表示:Size类 4.矩形的表示:Rect类 5.颜色空间转换:cvtColor()函数 1.点的表示:Point类 Poi ...

  5. 使用php函数判断数字,PHP 几个常用数字判断函数的简单示例

    这篇文章主要为大家详细介绍了PHP 几个常用数字判断函数的简单示例,具有一定的参考价值,可以用来参考一下. 对PHP的几个常用数字判断函数代码感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧 ...

  6. 【Matlab 常用图像处理函数 汇总】

    Matlab 常用图像处理函数 汇总 一.图像的读取 二.图像的写入 三.图像的显示 四.创建窗口 五.图像的格式转换 六.灰度直方图 七.伽马变换 八.图像二值化 九.阈值变换 十.直方图均衡化 十 ...

  7. 数字图像处理,Matlab常用图像处理函数汇总

    原文地址:Matlab图像处理函数汇总 作者:mimi 图像的变换  ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ② ...

  8. OpenCV之imgproc 模块. 图像处理(1)图像平滑处理 腐蚀与膨胀(Eroding and Dilating) 更多形态学变换 图像金字塔 基本的阈值操作

    图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...

  9. 机器视觉基础知识/经典系统/常用领域以及机器视觉常用的图像处理库

    [0-定义] **计算机视觉:**一门研究如何使机器"看"的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别.跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理 ...

最新文章

  1. 使用IDEA开发Servlet程序
  2. WebService大讲堂之Axis2(6):跨服务会话(Session)管理
  3. linux资源利用率检查_使用free命令查看实际内存占用(可用内存)
  4. 【转载】GuanDan v2.01 发布
  5. w3c html.css,W3C教程(6):W3C CSS 活动
  6. 【JavsScript】作用域链
  7. 个人总结之Volley的cookie处理
  8. windows10开启Webdav文件服务
  9. w3cschool算法挑战记录1-16(位移密码算法挑战)
  10. Stata:面板数据模型一文读懂
  11. android list嵌套list,Android开发日常-listVIiew嵌套webView回显阅读位置
  12. 多级放大电路的一般问题(耦合方式+动态分析)详解
  13. 新概念英语(第三册)复习(原文)——Lesson 21 - Lesson 30
  14. 一个mysql事务引发的思考(血案)
  15. Levenshtein 自动机(拼音纠错)
  16. CTF网络安全竞赛签到题
  17. 运筹学实验6 指派问题的求解
  18. java实现远程登录RDP
  19. python oserror路径not found_详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
  20. 香港理工大学酒店管理html,香港理工大学大酒店管理硕士要求

热门文章

  1. MoveNet 姿态估计,树莓派上也能跑!
  2. 继 Swin Transformer 之后,MSRA 开源 Video Swin Transformer,在视频数据集上SOTA
  3. 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
  4. 学术人必备!懒人制作学术会议Oral/Spotlight Video指南
  5. 谷歌CEO支持欧盟禁止人脸识别!微软总裁:能用“手术刀”就别用“切肉刀”...
  6. CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准
  7. 【Python】Python实战从入门到精通之三 -- 教你使用Python中条件语句
  8. antimalware可以关闭吗_EMUI这几个功能一定要关闭 不然手机会越来越卡
  9. 听说你想爬点壁(mei)纸图
  10. Numpy基础知识点汇总