【OpenCv】学习笔记

前言:

【#include <opencv2/opencv.hpp>】中“opencv2”中的”2”并不表示OpenCV的版本号。

我们知道,OpenCV是基于C/C++的,”cv”和”cv2”表示的是底层C API和C++API的区别,”cv2”表示使用的是C++API。

1、像素范围处理函数saturate_cast<uchar>

saturate_cast<uchar>(-100),返回0;

saturate_cast<uchar>(288),返回255;

saturate_cast<uchar>(100),返回100;

这个函数的功能是确保RGB值的范围在0~255之间。

2、Filter2D函数

(通过图像的掩膜操作实现图像的对比度增强:根据掩膜重新计算图片中每个像素的像素值)

图像的掩膜操作

函数调用filter2D功能:

(1)定义掩膜:Mat kernel = {Mat_<char>(3,3)<<0,-1,0,-1,5,-1,0,-1,0};

(2)filter2D(src,dst,ddepth,kernel):

其中src与dst是Mat类型变量,src: 输入图像   dst: 输出图像;

目标图像深度ddepth:和输入图像具有相同的尺寸和通道数量 src.depth(),如果没写将生成与原图像深度相同的图像,当ddepth输入值为-1时,目标图像和原图像深度保持一致;

kernel是定义的掩膜。

3、getTickCount函数、getTickFrequency()函数

OpenCV中经常会使用getTickCount()和getTickFrequency()来计算程序执行时间:

double t = getTickCount();

程序代码xxxxxx

double timeconsume = (getTickCount() - t) / getTickFrequency(); //计算时间消耗长短函数

getTickCount():用于返回从操作系统启动到当前所经的计时周期数; 

getTcikFrequency():用于返回CPU的频率。(C++中单位为秒,也就是每秒重复的次数);

所以 (getTickCount() - t) / getTcikFrequency():(当前次数-开始计时次数)/每秒重复次数=从开始到当前所用时间(s)。

4、opencv中CV_8UC3含义

预定义类型的结构:  CV_<bit_depth>(S|U|F)C<number_of_channels>  

(1) bit_depth:比特数,代表8bite\16bite\32bite\64bite  

eg:8表示你所创建的储存图片的Mat对象中,每个像素点在内存空间所占的空间大小8bite。

  (2) S|U|F  

S: signed int,即有符号整型;  U: unsigned int,即无符号整型;  F: float,单精度浮点型。  

(3) C<number_of_channels>:所存储的图片的通道数。 

channels = 1:灰度图片--grayImg---是--单通道图像  

channels = 3:RGB彩色图像---------是--3通道图像  

channels = 4:带Alph通道的RGB图像--是--4通道图像

5、Scalar函数

scalar:将图像设置成单一灰度和颜色,后面向量的位数是和图像通道数一致。

Scalar(0, 0, 255)代表将三通道图像设置为全红色。cvScala的储存顺序是B-G-R,而CV_RGB的储存顺序是R-G-B,两者正好相反,所以cvScalar(0, 0, 255)实际意思是R=255,即为红色的。

下面给出示例代码:【定义一个矩阵并对其附上颜色:Scalar函数的使用】

#include<opencv2/opencv.hpp> 

#include<iostream>  

using namespace std; 

using namespace cv;  

int main(int argc,char** argv) 

{  

Mat src;  

src = imread("F:/20.jpg"); 

if (src.empty())  {   

cout << "读取图片有误" << endl;   

waitKey(0);   

return -1;  }  

namedWindow("loadimage", WINDOW_AUTOSIZE); 

 imshow("loadimage", src);  

Mat dst;  

dst=Mat(src.size(),src.type());    //创建一个矩阵根据src的大小和类型,赋予了矩阵的大小和矩阵元素的种类  

dst = Scalar(255,0,0);   //给创建的矩阵上的每个点付给幅值,给予颜色 

 //dst(a,b,c)函数的三个参数a:蓝色,b:绿色,c:红色;幅度是0-255设置坐标点的参数。 

//opencv是bgr图像  

namedWindow("outputpic",CV_WINDOW_AUTOSIZE); 

imshow("outputpic",dst);  

waitKey(0);  

return 0; 

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容