opencv学习11——灰度图像读取_GISer_Lin的博客-程序员秘密_opencv读取灰度图像

技术标签: opencv  

一、灰度图像读取,4中实现方式

1.cv2.imread(image,0),在图像读取方法中使用0或者cv2.IMREAD_GRAYSCALE读取灰度图

2. cv2.cvtColor(image,cv2.COLOR_BGR2GRAY),在图像以BGR形式读取完毕后,使用图像色彩转换的方法cvt将图像有BGR转换为灰度图

3.使用代码将BGR格式图像转换为灰度图,转换公式:gray = (b + r + g)/3

4.代码转换,转换公式:gray = r*1 + g*2 + b*1

二、代码实现

1.

import cv2

img2 = cv2.imread('image01.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('',img2)
cv2.waitKey(0)

2.

import cv2

img = cv2.imread('image01.jpg',1)
dst = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.

# gray = (b + r + g)/3
import cv2
import numpy as np

img = cv2.imread('image01.jpg',1)
imgHeight,imgWidth,imgDeep = img.shape

dst = np.zeros((imgHeight,imgWidth,3),np.uint8)

for i in range(imgHeight):
    for j in range(imgWidth):
        (b,g,r) = img[i,j]
        gray = (int(b)+int(g)+int(r))/3
        dst[i,j] = np.uint8(gray)

cv2.imshow('',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.

#定点运算,gray = r*1 + g*2 + b*1
import cv2
import numpy as np

img = cv2.imread('image01.jpg',1)
imgHeight,imgWidth,imgDeep = img.shape

dst = np.zeros((imgHeight,imgWidth,3),np.uint8)

for i in range(imgHeight):
    for j in range(imgWidth):
        (b,g,r) = img[i,j]
        gray = (int(b)*1+int(g)*1+int(r)*1)/3
        dst[i,j] = np.uint8(gray)

# # 位移计算
# for i in range(imgHeight):
#     for j in range(imgWidth):
#         (b,g,r) = img[i,j]
#         gray = (int(b)*1+(int(g)<<1)+int(r)*1)>>2
#         dst[i,j] = np.uint8(gray)

cv2.imshow('',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

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

智能推荐

你真的学会Java自带的监控工具VisualVM的用法了吗_程序员老银币的博客-程序员秘密_java visualvm

Java VisualVM是jdk自带一款工具,可以十分友好的监控java进程相关的应用服务及中间件。工具位置jdk的bin目录下,找到jvisualvm.exe,双击打开即可。功能介绍1、抽样器和profiler,这两个差不多,用其中一个即可。比如抽样器,点击CPU,就可以看到各个类以及方法执行的时间,可以监控哪个类的方法执行时间较长,一眼就能定位到具体的异常方法。点击内存,也一样,很直观的就能找到哪个位置可能存在内存泄漏的情况。2、安装visual..

适合的才是最好的-RxJava篇_海重山青的博客-程序员秘密

对于程序猿来说,Demo是最好的起手。而对于RxJava来说,你可以简单理解成:是一个观察者模式框架替代AsyncTask成为更好的异步操作工具即便逻辑再复杂,对于RxJava来说就是:简洁首先上Demo:public static void main(String[] args) { // 0.准备一些数据 Integer[] numbers = { 1,

linux gem手动安装_颜敏的博客-程序员秘密_linux 安装gem

欢迎访问我的个人博客网站:http://www.yanmin99.com/ 一、rubygems官网下载源码 wget https://rubygems.org/rubygems/rubygems-2.6.12.zip 二、解压源码文件 unzip rubygems-2.6.12.zip 三、安装 cd rubygems-2.6.12 sudo ruby setup.rb

图的最短路径——Bellman-Ford算法(未优化)_秃头蒋小凡要coding的博客-程序员秘密

Dijkstra算法能解决单源最短路径问题,即一个顶点到其它所有顶点的最短路径但如果有负权边,则dis所确定的该顶点到其它某一个顶点的确定值会改变,无法解决负权变的问题Bellman-Ford算法可以有效解决负权边的问题Bellman-Ford算法原理:使用邻接表存储每一条边的信息,即U为起始顶点,V为终止顶点,W为权值首先初始化源点到各个顶点的距离dis再进行对各边的松弛,此步和Dijkstra算法相同//以1为源点为例//对每一条边进行松弛for(int i=1;i&lt;=m;i++

ngrok配置_有金的博客-程序员秘密

server_addr: "opzoonface.com:4443"trust_host_root_certs: falsetunnels:  saas:    subdomain: "wangjing"    proto:      http: 8080  image:    subdomain: "image.wangjing"    proto:

2021年的第一盆冷水:有人说别太把图神经网络当回事儿_人工智能学家的博客-程序员秘密

来源:数学中国图神经网络(GNN)是机器学习中最热门的领域之一,在过去短短数月内就有多篇优秀的综述论文。但数据科学家 Matt Ranger 对 GNN 却并不感冒。他认为这方面的研究会...

随便推点

html中可爱的细虚线的代码_edmond80的博客-程序员秘密

实现代码:大家都知道我们使用标签就可制作出一个细线条,不过我们可以对定义一些参数可以获取可爱的细虚线。我们也可以修改其中的color,size的参数可以得到不同的效果…… 

理解vue中的插槽------slot与slot-scope_IT 哈的博客-程序员秘密

vue当中的插槽,指的即是slot,是组件当中的一块HTML模板。该模板是否显示,以及如何显示由其父组件说了算。不过插槽显示的位置是由子组件决定 ,你将slot写在组件template的哪块,父组件传过来的模板将来就显示在哪块!单个插槽单个插槽是vue官方的叫法。你也可以叫它默认插槽。另外因为该插槽不用设置name属性,也可以称其为匿名插槽。先来看一个例子。父组件:&l...

【软考总结】——知识产权_chouxian0781的博客-程序员秘密

这一部分虽然在软考过程中比例很少,但是想要在软考中的高分,这部分相对其他内容还是比较简单的。下面小编主要是结合自己在软考复习过程遇到的一些问题进行整理。 著作权 著作权:指文学,艺术,自然科学,社会科学和工程技术领域内具有独创性并能以某种有形形式复制的...

css - ime-mode属性_Alan_阿兰的博客-程序员秘密_ime-mode:inactive

作用用css实现关闭文本框输入法语法:ime-mode : auto | active | inactive | disabled取值:auto : 默认值。不影响ime的状态。与不指定 ime-mode 属性时相同active : 指定所有使用ime输入的字符。即激活本地语言输入法。用户仍可以撤销激活imeinactive : 指定所有不使用ime输入的字符。即激活非

python遇到的问题与解决_luozhonghua2000的博客-程序员秘密

1、   No module named 'requests'解决方法解决方法:由于我安装的python的时候,也选择安装了pip,所以这里只分享自己实践过的方式。我的python安装的目录是D:/Python①cmd ②cd D:/Python③pip install requests 等待系统自动加载安装。 2、ImportError: No modul

磁盘备份及raid0和raid10的组建_ZZULI_Lucas的博客-程序员秘密_raid0 备份

blkid 查询各个设备UUIDmount -U ‘UUID’ 加挂载点 挂载设备umount /mnt/sdb1 卸载挂载设备sdb1(无占用)lsof /mnt/sdb1 有用户占用时,查询sdb1占用进程和用户fuser -km /mnt/sdb1 结束sdb1的所有占用cat /proc/mounts 查询所有的挂载点umount -o remount +挂载点 重新...