#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
 Mat img4 = imread("LinuxLogo.jpg");
2 // 创建画"窗口
namedWindow("");
// 在窗口中显示游戏原画
imshow("", img4);
// 等待6000 ms后窗口自动关闭
waitKey();

ROI : region of interest

嵌入(覆盖图像),mask法

     Mat console = imread("console.jpg"); //载入图像到Mat
Mat sight1 = imread("sight1.jpg");
namedWindow("sight1.jpg");
namedWindow("控制台");
imshow("控制台",console);
imshow("sight1.jpg",sight1); //设定区域
Mat ROI = console(Rect(,,sight1.cols,sight1.rows)); //读入mask
Mat mask = imread("sight1.jpg"); //将目标拷贝到ROI
sight1.copyTo(ROI,mask); //显示
namedWindow("add");
imshow("add",console); waitKey();
return ;

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow

图片路径问题

     //【0】定义一些局部变量
double alphaValue = 0.5;
double betaValue;
Mat srcImage2,srcImage3, dstImage; //【1】读取图像 ( 两幅图片需为同样的类型和尺寸 )
srcImage2 = imread("moon.jpg");
srcImage3 = imread("road.jpg"); if (!srcImage2.data) { printf("读取srcImage2错误~! \n"); return false; }
if (!srcImage3.data) { printf("读取srcImage3错误~! \n"); return false; } //【2】做图像混合加权操作
betaValue = (1.0 - alphaValue);
addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage); //【3】创建并显示原图窗口
namedWindow("原图 by 强哥");
imshow("原图 by 强哥", srcImage2); namedWindow("线性混合图 by强哥");
imshow("线性混合图 by强哥", dstImage);
waitKey(); return ;
 void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-);  

dst = src1[I]*alpha+ src2[I]*beta + gamma;

src1与src2的通道数需要相同,否则会出现以下问题

 OpenCV Error: Sizes of input arguments do not match (The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array') in arithm_op
        split(srcImage,channels);//分离色彩通道

        //【3】将原图的红色通道引用返回给imageBlueChannel,注意是引用,相当于两者等价,修改其中一个另一个跟着变
imageBlueChannel=channels.at(); //【4】将原图的蓝色通道的(500,250)坐标处右下方的一块区域和logo图进行加权操作,将得到的混合结果存到imageBlueChannel中
addWeighted(imageBlueChannel(Range(, + logoImage.rows),Range(, + logoImage.cols)),0.9, logoImage,0.5,,imageBlueChannel(Range(, + logoImage.rows),Range(, + logoImage.cols)));

codeblock乱码问题解决

图像的深度,位深

线性滤波:方框滤波,均值滤波,高斯滤波

非线性滤波:中值滤波,双边滤波

均值滤波:不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。特殊的boxfilter

 #include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp> using namespace std;
using namespace cv; Mat g_src,g_dst1,g_dst2,g_dst3,g_dst4,g_dst5;
int g_box_core = ;
int g_blur_core = ;
int g_gau_core = ;
int g_median_core = ;
int g_bila_core = ; static void on_box(int,void*);
static void on_blur(int,void*);
static void on_gau(int,void*);
static void on_median(int,void*);
static void on_bila(int,void*); int main()
{
//读原图
g_src = imread("pool.jpg"); //克隆三个图到dest
g_dst1 = g_src.clone();
g_dst2 = g_src.clone();
g_dst3 = g_src.clone();
g_dst4 = g_src.clone();
g_dst5 = g_src.clone(); namedWindow("原图");
imshow("原图",g_src); //boxFiter
namedWindow("box");
createTrackbar("core","box",&g_box_core,,on_box);
on_box(g_box_core,);
// imshow("box",g_dst1); //blur
namedWindow("blur");
createTrackbar("core","blur",&g_blur_core,,on_blur);
on_blur(g_blur_core,);
// imshow("blur",g_dst2); //GaussionBlur
namedWindow("gau");
createTrackbar("core","gau",&g_gau_core,,on_gau);
on_gau(g_gau_core,);
// imshow("gau",g_dst3); namedWindow("median");
createTrackbar("core","median",&g_median_core,,on_median);
on_median(g_median_core,); namedWindow("bila");
createTrackbar("core","bila",&g_bila_core,,on_bila);
on_bila(g_bila_core,);
// imshow("bila",g_dst5); waitKey();
return ;
} static void on_box(int,void*)
{
//trackbar最小值为1,此处保证模板存在
boxFilter(g_src,g_dst1,-,Size(g_box_core + ,g_box_core + )); imshow("box",g_dst1);
} static void on_blur(int,void*)
{ blur(g_src,g_dst2,Size(g_blur_core + ,g_blur_core + )); imshow("blur",g_dst2);
} static void on_gau(int,void*)
{
//参数必须为奇数
GaussianBlur(g_src,g_dst3,Size(g_gau_core * + ,g_gau_core * + ),,); imshow("gau",g_dst3);
} static void on_median(int,void*)
{
medianBlur(g_src,g_dst4,g_median_core * + ); imshow("median",g_dst4);
} static void on_bila(int,void*)
{
bilateralFilter(g_src,g_dst5,g_bila_core,g_bila_core*,g_bila_core/); imshow("blia",g_dst5);
}
     Mat srcImage;
g_srcImage.copyTo(srcImage);
int resultImage_cols = g_srcImage.cols - g_tempalteImage.cols + ;      //需要处理参数
int resultImage_rows = g_srcImage.rows - g_tempalteImage.rows + ;      //需要处理参数
g_resultImage.create(resultImage_cols, resultImage_rows, CV_32FC1); matchTemplate(g_srcImage, g_tempalteImage, g_resultImage, g_nMatchMethod);  //注意参数
normalize(g_resultImage, g_resultImage, , , NORM_MINMAX, -, Mat());
double minValue, maxValue;
Point minLocation, maxLocation, matchLocation;
minMaxLoc(g_resultImage, &minValue, &maxValue, &minLocation, &maxLocation); if (g_nMatchMethod == TM_SQDIFF || g_nMatchMethod == CV_TM_SQDIFF_NORMED) //寻找匹配点
{
matchLocation = minLocation;
}
else
{
matchLocation = maxLocation;
} rectangle(srcImage, matchLocation, Point(matchLocation.x + g_tempalteImage.cols, matchLocation.y + g_tempalteImage.rows), Scalar(, , ), , , );
rectangle(g_resultImage, matchLocation, Point(matchLocation.x + g_tempalteImage.cols, matchLocation.y + g_tempalteImage.rows), Scalar(, , ), , , ); imshow("原始图", srcImage);
imshow("效果图", g_resultImage);

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

  1. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读

    上一篇文章中介绍了如何使用OpenCV自带的haar分类器进行人脸识别(点我打开). 这次我试着自己去训练一个haar分类器,前后花了两天,最后总算是训练完了.不过效果并不是特别理想,由于我是在自己的 ...

  2. OpenCV学习记录之摄像头调用

    关于opencv调用摄像头的问题主要是因为摄像头的打开有延时.在显示图像前,要用if语句判断图像是否存在.(否则会报错) 具体的:教程里的源程序,将if条件句里,break去掉,并增加else语句. ...

  3. OpenCV学习记录(一):使用haar分类器进行人脸识别 标签: opencv脸部识别c++ 2017-07-03 15:59 26人阅读

    OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).OpenCV2之后的C++接口除了Haar特征 ...

  4. OpenCV学习记录(C++版本)

    HighGUI组件 图像的载入:imread()函数 Mat imread(const string& filename, int flag = 1)其中flag=1代表读入RGB彩色图像,- ...

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

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

  6. OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现

    # OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-环 ...

  7. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  8. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  9. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

随机推荐

  1. nyoj 0325 zb的生日(dp)

    nyoj 0325 zb的生日 zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集 ...

  2. 记录一次面试中的HTTP请求相关问题

    1.HTTP中的状态码分别代表什么 比较基础,自行百度.   2.HTTP请求,响应头部content-length用来做什么的 答:Content-Length首部告诉浏览器报文中实体主体的大小.这 ...

  3. laravel模型关联:

    一对一hasOne(用户-手机号) 一对多has Many(文章-评论) 一对多反向belongsTo(评论-文章) 多对多belongsToMany(用户-角色) 远层一对多hasManyThrou ...

  4. JAVA项目之苹果IAP内购JAVA服务器验证流程详解

    1.前言 本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员,  认真看,  定能完美解决苹果内购问题. 苹果IAP内购支付实际上是"将客户端支 ...

  5. SqlServer2008备份与还原(完整图示版)

    一.备份 1.在需要备份的数据库上,右键——任务——备份,如下: 2.选择备份到哪个路径和备份名字: 点击“添加”,如下, 3.上面点击“确定”后,回到第一个页面,选中刚才添加的路径和文件名 4.左上 ...

  6. Reveal 破解及使用

    Reveal是一款很好的iOS调试应用,这在你的开发中起到了相当大的帮助. 破解包可去http://xclient.info/?_=118ba0724e7a6af91ba29a22ee4131da 下 ...

  7. Linux系统命令行中vim编辑器取消高亮显示

    由于在使用vim编辑代码的时候不小心忘记首先输入i(insert)模式,导致写的代码出现了棕黄色的阴影显示 摸索了很久终于找到了解决方法: 1.退出vim编译器 2.在在命令行下输入:nohl,回车 ...

  8. [HAOI2006]l旅行

    这道题...一眼看出一个暴力思虑...那就是按照生成树... 排完序之后从当前边开始向后做生成树... 统计一下答案就好了... 结果...这就是正解...QVQ...smg...我去... 呆码: ...

  9. 「版本升级」MyEclipse CI 2018.12.0正式发布

    新版本MyEclipse为WildFly 14新增一个新的服务器连接器,改进性能并新增一些Java 10修复程序.新版本为IDE做了几个核心修复,这是MyEclipse 2018一个更棒的升级. [M ...

  10. IBM MQ 集成CXF 发送JMS 消息

    0.POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...