首页 > 其他分享 >Opencv学习笔记(2)

Opencv学习笔记(2)

时间:2023-11-29 14:33:20浏览次数:40  
标签:运算 color 笔记 像素 学习 Opencv 按位 图像 灰度

图像处理是图像识别过程中重要一环,一张图像可能包括海量的不明确的信息,图像处理的目的是消除图像中无关的信息,恢复有用的真实信息,增强有效信息的可检测性,最大限度地简化数据。

参考知乎文章链接:https://zhuanlan.zhihu.com/p/547096645

主要学习图像处理的一些手段和方法

1、图像灰度化

图像灰度化指以黑色为基准色,用不同亮度的黑色来显示图像,通常为从0%(白色)到100%(黑色)的亮度值。图像灰度化可以将彩色图转换为灰度图。

 在RGB模型中,R=G=B时表示为灰度颜色,其中R=G=B的值叫灰度值。在下图中,立方体中的虚线即为R=G=B时的灰度颜色。R=G=B=0时,灰度值为0,颜色为黑色;R=G=B=255时,灰度值为255,颜色为白色。

2、图像二值化

图像二值化是一种特殊的灰度化,就是将灰度值设置为0或255,也就是整个图像非黑即白。图像二值化的目的是尽可能的去除干扰信息,获取目标信息。一般会先将图片灰度化,再进行二值化。

图像二值化最常使用的方法是设定一个全局的阈值 T ,用 T 将图像分割为两类像素:大于 T 的像素群和小于 T 的像素群,然后将两类像素群分别设定为白色或黑色。这种方法称为固定阈值法。

3、图像的按位逻辑运算

图像的按位逻辑运算就是将两幅图的每个像素进行按位逻辑运算,简称位运算。

常见的位运算有4种:按位与、按位或、按位异或、按位取反  具体介绍可参考:https://www.cnblogs.com/Zhouce/p/17859435.html

        (1)按位与运算,用 and 表示按位与运算,1表示真,0表示假。

                  将任何数值N(范围0-255)与数值0(二进制为0000 0000)进行按位与运算,都会得到数值0。                

                  将任何数值N(范围0-255)与数值255(二进制为1111 1111)进行按位与运算,都会得到数值本身。

        (2)按位或运算,用 or 表示按位或运算,两个逻辑值只要有一个为真时,结果就为真。

        (3)按位非运算,用 not 表示按位非运算,当输入为真时,结果为假;当输入为假时,结果为真。

        (4)按位异或运算,用 xor 表示按位异或运算,两个逻辑值相反时,结果才为真。

彩图中,每个像素以(R,G,B)值表示,位运算时,先将R、G、B值转换为二进制值,然后做位运算。比如,像素1(0,198,219)与像素2(198,219,1)进行按位异或运算时,先将所有数值转换成二进制数,如下表。  
像素 十进制值 二进制值
像素1-R 0 0000 0000
像素1-G 198 1100 0110
像素1-B 219 1101 1011
像素1-R 198 1100 0110
像素1-G 219 1101 1011
像素1-B 1 0000 0001

需要注意的是,必须是尺寸一致的图像才能进行位运算。如果两张图片尺寸不一致,可以先剪裁成同一尺寸,再做位运算。

4、图像掩膜

简单来说,掩膜是用一幅二值化图片对另外一幅图片进行局部的遮挡,一般将二值化图称为掩模图像。

比如下图中,用左边的二值化图对中间的彩图进行掩模,掩模的结果如右图所示。

 5、在Opencv中图像的按位逻辑运算

常见的4种图像按位逻辑运算在opencv库中可分别通过“cv2.bitwise_and()”、“cv2.bitwise_or()”、“cv2.bitwise_xor()”、“cv2.bitwise_not()”四个函数来实现。

以按位与运算为例:

1 color =  np.zeros((320, 240, 3),dtype=np.uint8) # 创建一个三维零矩阵,类型为uint8
2 color[:,:,0] = 12 # B # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
3 color[:,:,1] = 12 # G # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
4 color[:,:,2] = 12 # R # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
5 mask = cv2.inRange(hsv, lower, upper) # 色彩阈值化所得图
6 B2 = cv2. bitwise_and(color,color, mask=mask)  # 按位与运算

其中,“color”指的是原图,“mask”是另一张图,B2是先将两张原图进行与运算,再将得到的图与mask图进行与运算,最终得到的图。

标签:运算,color,笔记,像素,学习,Opencv,按位,图像,灰度
From: https://www.cnblogs.com/Zhouce/p/17864771.html

相关文章

  • Linux vi 和 vim编辑器(学习笔记)
    1简介所有的Linux系统都会内建vi文本编辑器。vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。2vi和vim常用的三种模式2.1 正常模式以vim打开一......
  • 《Effective Java》阅读笔记-第三章
    EffectiveJava阅读笔记第三章对于所有对象都通用的方法第10条重写equals时请遵守通用约定重写equals方法很简单,但是很容易出现错误,最直接避免这种错误的方式就是不重写equals,当出现任意一下情况的时候,就不需要重写equals:类的每个实例在逻辑上就是唯一的没比要......
  • linux常用命令(学习笔记)
    1findfind.-name"*.c"//将目前目录及其子目录下所有延伸档名是c的文件列出来find.-typef//将目前目录其其下子目录中所有一般文件列出find.-ctime-20//将目前目录及其子目录下所有最近20天内更新过的文件列出find/var/log-typef-mtime......
  • Linux系统管理(学习笔记)
    1防火墙操作serviceiptablesstatus//查看iptables服务的状态serviceiptablesstart//开启iptables服务serviceiptablesstop//停止iptables服务serviceiptablesrestart//重启iptables服务chkconfigiptablesoff//关闭iptables服务......
  • NS-3源码学习(四)wifi-ent-network.cc
    NS-3源码学习(四)wifi-ent-network.cc设定的参数booludp{true};udp/tcp通信选择booldownlink{true};AP->STA:downlink=true/STA->AP:downlink=false数据发送方向选择booluseExtendedBlockAck{false};启用扩展块确认,默认不启用,即块确认的大小为64,启用......
  • 学习笔记434—【Matlab】Matlab读取dcm图像的函数
    【Matlab】Matlab读取dcm图像的函数Matlab版本:2020a一、dicomread函数Matlab读取dcm图像的函数是dicomread,根据dicomread的帮助文档,该函数有四种参数输入方式:X=dicomread(filename);%根据文件名直接读取X=dicomread(info);%根据构造的info结构体读取X=dicomrea......
  • Linux文件操作(学习笔记)
    文件操作1新增文件(touch)toucha.txt//在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间2删除文件(rm)rm文件名//删除当前目录下的文件rm-f文件名//删除当前目录的的文件(不询问)3编辑文件(vi、vim)vi文件名//打开......
  • 强化学习:AC算法中为什么不使用Q函数来表示优势函数
      《High-DimensionalContinuousControlUsingGeneralizedAdvantageEstimation》      ====================== 原论文: ......
  • 初识Linux学习笔记
    引言作为一名计算机专业的学生,深入了解和熟练使用Linux操作系统是至关重要的。Linux在计算机领域有着广泛的应用,不论是服务器端还是嵌入式系统,都离不开Linux的支持。本文将介绍我个人初识Linux的学习经验,包括基本概念、常用命令以及一些实际应用。什么是Linux?Linux是一种开源的类U......
  • 第七周阅读笔记|人月神话————提纲挈领
    所谓提纲挈领,从字面上讲就是抓住渔网的总绳,提起衣服的领子,其含义(度娘说要用含义而不推荐用涵义)就是告诉我们做事情要能够抓住要领。那么本篇告诉我们什么是要领呢,就是书面文档,从一开始就要意识到其重要性,那么就不会对文档产生厌烦。因为作为技术人员来说,包括我,普遍对文档没有好感,......