opencv学习笔记——图像的载入、显示和输出

来源:互联网 发布:xmind 8 mac 注册码 编辑:程序博客网 时间:2024/06/05 19:02
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;int main(){    /* 图像的载入和显示 */    Mat horo = imread("1.jpg");                 //载入图像到Mat    namedWindow("【1】动漫图");                  //创建一个窗口    imshow("【1】动漫图", horo);             //显示窗口    /* 初级图像混合 */    //载入图片    Mat image = imread("fate.jpg");    Mat logo = imread("lingzhou.jpg");    //载入后显示    namedWindow("【2】原画图");    imshow("【2】原画图", image);    namedWindow("【3】logo图");    imshow("【3】logo图", logo);    //定义一个Mat类型,用于存放图像的ROI    Mat imageROI;    imageROI = image(Rect(1000, 400, logo.cols, logo.rows));    //imageROI = image(Range(400, 400 + logo.rows), Range(1000, 1000 + logo.cols));    //将logo加到原图上    addWeighted(imageROI, 0.5, logo, 0.3, 0., imageROI);    //显示结果    namedWindow("【4】原画+logo图");    imshow("【4】原画+logo图", image);    /* 将一个Mat图像输出到图像文件 */    //输出一张jpg图片到工程目录下    imwrite("由imwrite生成的图片.jpg", image);    waitKey();    return 0;}

imread函数
  Mat imread(const string& filename, intflags=1 );
  第二个参数,int类型的flags,为载入标识,它指定一个加载图像的颜色类型。定义如下:

enum  {  /* 8bit, color or not */     CV_LOAD_IMAGE_UNCHANGED  =-1,          //这个标识在新版本中被废置了,忽略。/* 8bit, gray */     CV_LOAD_IMAGE_GRAYSCALE  =0,           //始终将图像转换成灰度/* ?, color */     CV_LOAD_IMAGE_COLOR      =1,           //总是转换图像到彩色一体,3通道图/* any depth, ? */     CV_LOAD_IMAGE_ANYDEPTH   =2,           //若载入的图像的深度为16位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。/* ?, any color */     CV_LOAD_IMAGE_ANYCOLOR   =4  };  

  书上说

  • flags >0返回一个3通道的彩色图像。
  • flags =0返回灰度图像。
  • flags <0返回包含Alpha通道的加载的图像。

  但是我在实际测试时,写入不属于枚举值的大于0的值会影响图片尺寸。

addWeighted函数
  void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)

参数 说明 src1 InputArray类型表示需要加权的第一个数组,常常填一个Mat alpha 表示第一个数组的权重 src2 表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数 beta 表示第二个数组的权重值 dst 输出的数组,它和输入的两个数组拥有相同的尺寸和通道数 gamma 一个加到权重总和上的标量值 dtype 输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,这个参数设置为-1(默认值),即等同于src1.depth()

  计算公式:dst(I)=src1(I)*alpha+src2(I)*beta+gamma。alpha和beta分别代表两个图像在dst图像中占得比例,实际测试会影响混合区域的透明度。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿园老师把学生名字写错怎么办 孩子的手写字磨了疙瘩怎么办 我家孩子上一年级算题特慢怎么办 脚注太多导致与正文距离太大怎么办 搜狗输入法打字不显示选字框怎么办 粘贴文字时带自动添加了序号怎么办 电脑上是表字打印出来是坔怎么办 不同颜色的衣服一起洗染色了怎么办 两岁宝宝不爱吃饭怎么办且消瘦 一岁两个月宝宝不爱吃饭怎么办 罗汉鱼头座大颜色不红怎么办 为什么孩子的牙都是龋齿怎么办呀 蓝迪儿童墙膜出现气泡了怎么办 空sd卡或文件系统不受支持怎么办 8个月宝宝吃了纸怎么办 宝宝出生两天了不吃不喝怎么办 八个月宝宝阴唇边红肿痛怎么办 儿童五周岁九个月比同龄矮怎么办 8个月宝宝长牙母乳喂养咬人怎么办 6周的孩子视力低常怎么办 宝宝吃了甜食生痰咳嗽怎么办 两个月的边牧抵抗力差怎么办 阴茎勃起后向上翘的厉害怎么办 5个月宝宝发烧38.5度怎么办 9个月宝宝发烧38.5度怎么办 八个月宝宝只吃母乳不吃奶粉怎么办 八个月母乳不够宝宝不吃奶粉怎么办 八个月宝宝吃母乳不吃奶粉怎么办 八个月宝宝戒奶不吃奶粉怎么办 刚满月的宝宝发烧38度怎么办 未满月的宝宝发烧38度怎么办 半月大的婴儿吃奶就漾奶怎么办 上司交给你不能完成的任务怎么办 电脑光驱里放入光碟放不出来怎么办 黑暗之魂3太难了怎么办 苹果手机下载的游戏闪退怎么办 宝宝两岁了不怎么爱拉大便怎么办? 小狗脖子发硬疼的直叫怎么办 厨房里有很多小虫子围着鸡蛋怎么办 狗生小狗后几天不吃饭怎么办 还没满月的小兔子突然死了怎么办