计算机视觉之图像特效(实现图像灰度处理等功能)(待更新。。。)

1.图像灰度处理

下面介绍四种图像灰度处理的方法:

方法1:cv2中的imread(参数:0表示为灰度图片,1表示为彩色图片)

测试代码如下:

1 import cv2
2 # 方法1 imread
3 img0 = cv2.imread(‘image0.jpg‘, 0)  # 0 为灰度图片 1 为彩色图片
4 img1 = cv2.imread(‘image0.jpg‘, 1)
5 print(img0.shape)
6 print(img1.shape)
7 cv2.imshow(‘src0‘,img0)
8 cv2.imshow(‘src1‘,img1)
9 cv2.waitKey(0)

运行结果如下:

src0为灰度图像:

src1为彩色图像:

方法 2:cvtColor

测试代码如下:

1 # 方法2 cvtColor
2 import cv2
3 img = cv2.imread(‘image0.jpg‘, 1)
4 dst = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 完成颜色空间的转换 从bgr模式转化为灰度模式
5 cv2.imshow(‘dst‘, dst)
6 cv2.waitKey(0)

运行结果如下:

同样的可以转化为灰度图像:

方法3:对RGB三个分量取均值

 1 # 方法3 RGB R=G=B gray=(R+G+B)/3
 2 import cv2
 3 import numpy as np
 4 img = cv2.imread(‘image0.jpg‘, 1)
 5 cv2.imshow(‘src‘,img)
 6 imgInfo = img.shape
 7 height = imgInfo[0]
 8 width = imgInfo[1]
 9 dst = np.zeros((height,width,3),np.uint8)
10 for i in range(0,height):
11     for j in range(0,width):
12         (b,g,r) = img[i,j]
13         gray = (int(b)+int(g)+int(r))/3  # 防止数据溢出
14         dst[i,j] = np.uint8(gray)
15 cv2.imshow(‘dst‘,dst)
16 cv2.waitKey(0)

运行结果:略

方法4:对rbg加权 gray = r*0.299+g*0.587+b*0.114

 1 # 方法4 对rbg加权
 2 # gray = r*0.299+g*0.587+b*0.114
 3 import cv2
 4 import numpy as np
 5 img = cv2.imread(‘image0.jpg‘, 1)
 6 cv2.imshow(‘src‘,img)
 7 imgInfo = img.shape
 8 height = imgInfo[0]
 9 width = imgInfo[1]
10 dst = np.zeros((height,width,3),np.uint8)
11 w = [0.299, 0.587, 0.114]
12 for i in range(0,height):
13     for j in range(0,width):
14         (b,g,r) = img[i,j]
15         gray = r*0.299+g*0.587+b*0.114
16         dst[i,j] = np.uint8(gray)
17 cv2.imshow(‘dst‘,dst)
18 cv2.waitKey(0)

运行结果:略

图像转灰度算法优化:

原因:

  • 重要
  • 基础
  • 实时性

优化方法:

  • 定点运算优于浮点运算
  • 减法优于乘除
  • 移位运算优于乘除

测试代码如下:

 1 import cv2
 2 import numpy as np
 3 img = cv2.imread(‘image0.jpg‘, 1)
 4 cv2.imshow(‘src‘,img)
 5 imgInfo = img.shape
 6 height = imgInfo[0]
 7 width = imgInfo[1]
 8 dst = np.zeros((height,width,3),np.uint8)
 9 for i in range(0,height):
10     for j in range(0,width):
11         (b,g,r) = img[i,j]
12         b = int(b)
13         g = int(g)
14         r = int(r)
15         # gray = (int(b) + int(g) + int(r)) / 3  # 防止数据溢出
16         gray = (r+(g << 1)+b) >> 2  # 浮点转化成了定点 r和b乘以1省略掉 乘除转化为移位运算 但是会损失一点精度
17         dst[i,j] = np.uint8(gray)
18 cv2.imshow(‘dst‘,dst)
19 cv2.waitKey(0)

运行结果如下:

src为彩色的原始图像:

dst为转化为灰度的目标图像:

其实可以通过算法优化的图像对比前面四种方法处理后的图像,可以知道,其实效果都差不多,但是性能显著提升!

原文地址:https://www.cnblogs.com/shixinzei/p/10895806.html

时间: 2024-10-28 15:42:31

计算机视觉之图像特效(实现图像灰度处理等功能)(待更新。。。)的相关文章

DICOM图像像素值(灰度值)转换为CT值

CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这个范围,通常是0-4096,这是我们常见到的像素值或者灰度值,这就需要我们在图像像素值(灰度值)转换为CT值. 首先,需要读取两个DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope. 然后通过公式: Hu = pix

Android 中的图像特效(Matrix)

以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,现在在Android中有一个Matrix类,它的中文意思就是矩阵.Matrix主要是用于图像的缩放.平移.旋转.扭曲等操作.图像处理,主要用到的是乘法. 下面是一个乘法的公式: 在Android里面,Matrix由9个float值构成,是一个3*3的矩阵.如下图 其含义如下: sinX和cosX,表示旋转角度的cos值和sin值(旋转角度是按顺时针方向计算的).translateX和translateY表示x和y的平移量.scale是缩放的

【转】四、android图像特效处理之底片效果

这篇将讲到图片特效处理的底片效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值. 例: ABC 求B点的底片效果: B.r = 255 - B.r; B.g = 255 - B.g; B.b = 255 - B.b; 效果图: 原图: 代码: package com.color; import android.content.Context; import android.graphics.Bitmap; import

【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换

import cv2 import numpy import os # Make an array of 120,000 random bytes. randomByteArray = bytearray(os.urandom(120000)) flatNumpyArray = numpy.array(randomByteArray) # Convert the array to make a 400x300 grayscale image. grayImage = flatNumpyArray

图像特征算子--之灰度共生矩阵原理分析与实现(八)

图像特征算子--之灰度共生矩阵原理分析与实现(八) [email protected] http://blog.csdn.net/kezunhai 灰度共生矩阵最早由Robert M.在提出,早期称为灰度空间依赖矩阵(Gray-Tone Spatial-Dependence Matrices),在其论文里,根据灰度空间依赖矩阵可以计算28种纹理特征,详细内容可以参考:Textural Features for Image Classification.由于纹理是由灰度分布在空间位置上反复出现而形

javascript特效源码(2、图像特效)

1.不停闪烁的图像 不停闪烁的图片[修改显示的图片及链接地址后根据说明进行共1步] 1.以下代码放在一个新建页面的HTML的<body></body> 区即可:[页面上必须什么都没有] <HTML> <HEAD> <TITLE>Blink image</TITLE> </HEAD> <BODY ONLOAD="soccerOnload()" topmargin="0">

看起来像它——图像搜索其实也不难 (图像相似,图像指纹,phash hash,图像搜索) 使用时候记得看这文章的评论

链接: http://pan.baidu.com/s/1o7ScyVo 密码: h8eb    这个文章的代码 另一个类似的代码  链接: http://pan.baidu.com/s/1hsFDCNy 密码: jxus http://blog.csdn.net/luoweifu/article/details/8220992                 使用时候记得看这文章的评论 看起来像它——图像搜索其实也不难 标签: pHash图像搜索图像识别图片搜索算法 2012-11-24 23:

【OpenCV入门教程之四】 ROI区域图像叠加&amp;初级图像混合 全剖析(转)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20911629 作者:毛星云(浅墨)    邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 在这篇文章里,我们一起学习了在OpenCV中如何定义感兴趣区域ROI,如何使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像

图像灰度变换及图像数组操作

Python图像灰度变换及图像数组操作 作者:MingChaoSun 字体:[增加 减小] 类型:转载 时间:2016-01-27我要评论 这篇文章主要介绍了Python图像灰度变换及图像数组操作的相关资料,需要的朋友可以参考下 使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量.矩阵.图像等)以及线性代数函数. 数组对象可以实现数组中重要的操

图像链接 与 图像映射 的区别

既然是讲到图像,那就先介绍一下 HTML 中有关图像的元素:( 根据W3标准 ,元素不推荐的 属性 不做分析 )  <img>元素------向网页中嵌入一幅图像 img元素的属性: (1)src:图片来源URL. (2)alt: 规定图像的替代文本. (3)height和width:单位为像素,如果不指定,则为默认:如果只指定height或width,则自动调整大小. (4)ismap :将图像定义为服务器端图像映射. (5)usemap:将图像定义为客户器端图像映射. (6)longdes