python中opencv图像处理实验(一)---灰度变换_基于opencv的图像灰度转化课程设计报告-程序员宅基地

技术标签: python  图像处理opencv  opencv  

在上一篇中记录了,如何配置opencv环境的问题。本篇则记录对灰度图像进行一些常规处理

一张图片是由像素点矩阵构成,我们对图片进行操作即为对图片的像素点矩阵进行操作。我们只要在这个像素点矩阵中找到这个像素点的位置,比如第x行,第y列,所以这个像素点在这个像素点矩阵中的位置就可以表示成(x,y),因为一个像素点的颜色由红、绿、蓝三个颜色变量表示(R,G,B),所以我们通过给这三个变量赋值,来改变这个像素点的颜色。

1.读入正常图像并进行灰度化处理

#读入原始图像
img=cv2.imread('test.jpg')
#灰度化处理
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

图片的灰度化:将一个像素点的三个颜色变量相等,R=G=B,此时该值称为灰度值

直接调用opencv中的函数,读入的图片可以与代码文件放在一起这样可以省略输入图片路径。


2.对灰度图像进行二值化处理

#二值化处理
ret,im_fixed=cv2.threshold(gray,50,255,cv2.THRESH_BINARY)

二值化处理:将一个像素点的值突出为0,255,使得图片呈现黑白两种颜色。在灰度图像中像素值在0~255,二值化后图像中像素值为0或255。

CV_THRESH_BINARY, //表示如果当前像素点的灰度值大于阈值则将输出图像的对应位置像素值置为255,否则为0

 

3.对灰度图像进行伽马变换

#伽马变换
gamma=copy.deepcopy(gray)
rows=img.shape[0]
cols=img.shape[1]
for i in range(rows):
    for j in range(cols):
        gamma[i][j]=3*pow(gamma[i][j],0.8)

伽马变换:用来图像增强,提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。

伽马值小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分

伽马值大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分


4.对灰度图像进行对数变换

# 对数变换
logc = copy.deepcopy(gray)
for i in range(rows):
    for j in range(cols):
        logc[i][j] = 3 * math.log(1 + logc[i][j])

对数变换:由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升。可用于增强图像的暗部细节。(下图太黑了,新手没调好...仔细看还是有一个轮廓的,将就一下--)


5.对灰度图像进行反色变换

#补色变换
cover=copy.deepcopy(gray)
for i in range(rows):
    for j in range(cols):
        cover[i][j]=255-cover[i][j]

反色变换:对原图像像素值的颜色进行反转,即黑色变为白色,白色变为黑色。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yawdd/article/details/80180848

智能推荐

Java语言程序设计 第二章(2.8)_格林威治时间用户输入相对于gmt的时区偏移量-程序员宅基地

文章浏览阅读515次。2.8 (当前时间)写出显示当前格林威治时间的程序。提示用户输入相对于GMT的时区偏移量,然后显示在这个特定时区的时间。import java.util.Scanner;public class ShowCurrentTime { public static void main(String[] args) { Scanner inPut = new Scanner(Syst..._格林威治时间用户输入相对于gmt的时区偏移量

一加5t Android 第三方系统上BL锁_一加怎么上bl锁-程序员宅基地

文章浏览阅读6.1k次。方法来自XDA大神,感谢大神发现这神奇的操作视频链接:https://www.youtube.com/watch?v=Bzfd-dKgpesXDA论坛中相关讨论:https://forum.xda-developers.com/t/remove-unlocked-bootloader-warning-message-at-the-start.3841712/方法和工具:https://forum.xda-developers.com/t/signing-boot-images-for-android-_一加怎么上bl锁

python3爬虫学习之实战无限下载百度图片_"re_dbs='\"thumburl\":\"(.*?)"-程序员宅基地

文章浏览阅读3k次。由于做项目需要大量图片,应我同学的要求,帮他爬取大量百度图片当做练习,这里写出来记录一下我们首先分析一下百度图片的页面和获取规则随便输入一个关键字,我们下滑图片页面,同时检查,就可以发现,它是通过Ajax请求一直获取图片之前正好也做了爬取微博的例子,想来是差不多,于是我们分析一下Ajax请求链接我们看到请求URL,多分析几条就能发现,它几乎是不变的,而变化的几条分别是,pn..._"re_dbs='\"thumburl\":\"(.*?)"

windows上如何安装jq_windows jq-程序员宅基地

文章浏览阅读3.6k次。jq介绍- jq是一款非常强大的用来将复杂的数据解析成json格式的工具。具体作用及用法官网有详细介绍。- 官网地址:https://stedolan.github.io/jq/Windows上安装jq- 如果要在Windows上顺利的使用jq,需要先安装chocolatey。- 以管理员身份待开cmd窗口,输入@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None _windows jq

钉钉官方接口调用过程_钉钉企业内部应用回调怎么弄-程序员宅基地

文章浏览阅读6.5k次,点赞5次,收藏24次。文章目录钉钉官方接口调用过程获取企业内部应用的访问凭证accessToken根据员工的企业UserId获取钉钉官方的unionId唯一性idUserId的获取方法appKey和appSecret的获取方法易错点钉钉官方接口调用过程获取企业内部应用的访问凭证accessToken首先需要引入依赖,如下图:钉钉开发者调用钉钉官方的接口的时候,一定要先要进行认证,什么意思呢?就是必须要告诉钉钉我是一个企业开发者,我有权限调用你的接口,那具体怎么认证呢?企业开发者通常可以在钉钉里面创建应用,我们需要把我们_钉钉企业内部应用回调怎么弄

Ubuntu 8.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解-程序员宅基地

文章浏览阅读136次。Linux版本:Ubuntu8.04内核版本:Linux 2.6.24交叉编译器版本:arm-linux-gcc-3.4.1交叉编译器下载链接:https://share.weiyun.com/5oxlS6X(密码:36R7)前言1、搭建交叉编译环境安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。2、交..._arm-linux-gcc 8

随便推点

nltk.download失败解决方案_nltk.download()运行不了-程序员宅基地

文章浏览阅读2.5k次。因国际网络连接不稳定,很多国内的小伙伴在使用NLTK下载停用词表时都碰到过下载失败的情况。其实解决方法很简单,只要先下载官网停用词包,然后在手动复制到NLTK对应目录下就好了,具体方法如下:1、首先打开官网,下载NLTK停用词文件包,如下图所示。(ps: 官网连接不好时,作者也提供自己从官网下载好的文件共大家使用)2、将解压后的停用词文件复制到如下路径:C:\Users\你账户的用户名\AppData\Roaming\nltk_data\corpora,如下图所示。之后就可以正常使用啦~..._nltk.download()运行不了

css绝对定位、相对定位和文档流的那些事_绝对定位文件流-程序员宅基地

文章浏览阅读1.9k次。文档流,就是普通流,就像你以前用表格布局基本只涉及到文档流,如绝对定位的元素不占文档流,它会忽略文档流的存在而浮在已有东西的上面。如相对定位它占文档流 ,所以定位不好它会覆盖已有的东西。浮动的东西也不占的,只是文档流会围绕浮动的东西。————————————————————————下面是转载部分—————————————————————————前言 接触html、和css_绝对定位文件流

MODIS数据行列号图_landsat行列号怎么算-程序员宅基地

文章浏览阅读1.7w次,点赞12次,收藏34次。_landsat行列号怎么算

【计算机三级数据库技术】第8章 数据库后台编程技术--附思维导图_数据库第八章数据库编程思维导图-程序员宅基地

文章浏览阅读685次,点赞2次,收藏8次。目录1 存储过程1.1 创建1.2 执行1.3 删除2 用户定义函数2.1 创建和调用标量函数2.2 创建和调用内联表值函数2.3 创建和调用多语句表值函数2.4 删除用自定义函数3 触发器3.1 基本概念3.2 创建触发器删除触发器4 游标4.1 游标的组成4.2 特点4.3 使用游标4.4 示例1 存储过程1.1 创建(1)传参的存储过程Create PROC [shema_name] proc_name@变量名1 as varchar(20)@变量名2 int AS select .._数据库第八章数据库编程思维导图

蚍蜉叹-程序员宅基地

文章浏览阅读523次。人情世故人之下, 墨染青峰墨紫砂。 红情踏遍痴情在, 我花竟败百花开。 蚍蜉一叹狂心咒, 月瘦孤光撞铁楼。 昨日雨中爬万里, 迈豪横指向天际。_蚍蜉叹

Qt调用FFmpeg命令录屏_linux qt 录屏 github-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏28次。//列出音视频设备ffmpeg -list_devices true -f dshow -i dummy//录屏命令ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (High Definition Audio 设备)" -pix_fmt yuv420p -vcodec libx264 -acodec aac -s 1440x900 ..._linux qt 录屏 github

推荐文章

热门文章

相关标签