本文是根据github上的项目所写 更多详情可以参见github其地址为:github
软件开发人员和其他人经常将计算机视觉视为一个很难进入的领域。在本文中,我们将使用一系列Microsoft Excel公式,使用Microsoft Excel中实现的示例算法从基础知识中学习计算机视觉。我们将使用一个惊喜技巧,帮助我们在Excel中实现和可视化诸如人脸检测,霍夫变换等算法,而无需依赖任何脚本或第三方插件。

图像基础知识

在开始这一话题前我们要先了解图片的构成,像素点是最小的图像单元,一张图片是由好多的像素点组成例如一张图片尺寸是500 * 338 的,表示图片是由一个500 * 338的像素点矩阵构成的,这张图片的宽度是500个像素点的长度,高度是338个像素点的长度,共有500 * 338 = 149000个像素点。因为一个像素点的颜色是由RGB三个值来表现的,所以像素点矩阵对应三个颜色向量矩阵,分别是R矩阵(500 *338大小),G矩阵(500 *338大小),B矩阵(500 *338大小)。如果每个矩阵的第一行第一列的值分别为:R:240,G:223,B:204,所以这个像素点的颜色就是(240,223,204),而在灰度图中灰度图只体现图像明暗的数值,可以通过图片的RGB值来计算出图像相应的灰度值,所以当一个图像转化为一个数组值彩色图片对应的是一个三维像素矩阵,而这个图片对应的灰度图像所转化成的数组应该是一个二维像素矩阵。
在看完本文你会很清晰的明白这个道理.

使用python读取图片像素值

首先准备一张图片如下(我准备的是神仙姐姐)


然后运行以下代码:

import numpy as np
import cv2
##读取为灰度图
img = cv2.imread('2.jpg',0)from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd
#这个就是我们要导出的Dataframe
##保存并导出像素值矩阵
dataframe = pd.DataFrame(img)
wb = Workbook()
ws = wb.active
for r in dataframe_to_rows(dataframe, index=True, header=True):ws.append(r)
wb.save("2.xlsx")

在上面代码中由于我们的excel是一个二维数据表,而图片读取进来是一个三维数组(包含图片的高度和宽度以及通道数一般通道数都为3,),为了便于处理所以读进来的图应该是一个二维的灰度图像的像素矩阵
运行上面

Excel可视化

首先打开我们的刚刚保存excel,就可以看到excel表中每一个值都是这个图片所对应像素值

我们选中全部数值,并找到条件格式里的色阶,并选择其他规则

将格式样式选择成三色刻度,并将值设置成以下,然后缩放比例到最小就可以查看效果


由于图片分辨率太高,我们的excel最小只能缩放到10%,所以只能这样了,但是换一张小一点的图可以很好地看到效果

好了到目前为止我们这个文章的工作就结束了,从本文我们可以知道,其实就可以明白计算机在图片处理里也是运用了Excel中的色阶的原理通过图片像素矩阵中每一个像素值对应着相应的颜色比例的映射,我们的灰度图像中对应的是黑白色(黑白色其实也是三原色的映射R=G=B=255为白色,R=G=B=0为黑色,R=G=B=小于255的某个整数时,此时就为某个灰度值)的映射,而彩色图像中对应的RGB三原色的映射。

EXCEL中的计算机视觉(1)——excel中的图像可视化相关推荐

  1. C# 实现Oracle中的数据与Excel之间的转换

    最近项目要求实现数据库之间数据在各个数据库之间导入导出,在此做个笔记 1. 将Oracle中的表导入到Excel中,反之亦然 private static readonly string connec ...

  2. C#如何在Form中嵌入并且操作Excel表格

    网上比较多讲述如何操作excel表的文章,但都是启动excel的窗口来打开excel数据文件.有时候需要把excel表嵌入到自己程序的form中,给客户一个不用切换窗口的操作界面,似乎更好.这在vc中 ...

  3. 在ASP.Net中如何彻底杀死Excel进程

    今天在一个项目中使用Dcom的方式获取数据,但是发现Excel进程有时候能杀死,有时候杀不死,导致上传文件时出错的偶发性BUG,经过多次测试,调用API的方式可以彻底杀死Excel进程的方法! 方法体 ...

  4. 转HTML中的table转为excel

    转换html 中的table 为excel,firefox浏览器支持,代码如下 <%@ page language="java" contentType="text ...

  5. python导入excel数据-如何把python中的数据导入excel

    python将数据导入excel的方法:1.在python官网下载xlrd第三方库:2.利用xlrd中的open_workbook函数读入excel文件,即可在python中导入excel数据. 一. ...

  6. python模块xlwt怎么用不了_python中使用 xlwt 操作excel的常见方法与问题

    前言 python可以操作excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的) python中使用xlwt操作excel非常方,和Java使用调框架apache poi相 ...

  7. java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...

    延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...

  8. C#中导出百万级Excel只需几秒除了NPOI还可以这样

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  9. Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

最新文章

  1. PyTorch 常用代码段示例整理
  2. openwrt+linux编译,openwrt x86 编译部署
  3. 【计算理论】图灵机 ( 非确定性图灵机 与 计算树 | 非确定性 | 非确定性图灵机 与 确定性图灵机 相互模仿 | 非确定性图灵机 -> 确定性图灵机 )
  4. Android-JNINDK(一)入门
  5. jmeter --- 基于InfluxDBGrafana的JMeter实时性能测试数据的监控和展示
  6. 查询CPU占用高的SQL语句的解决方案
  7. 迁移DirectX11到VS2015 Win10
  8. 服务器系统和数据库,服务器系统和数据库
  9. 【转】oracle内置函数 trunc 使用
  10. Kaggle注册无法进行人机验证You did not enter the correct captcha
  11. 【Multisim】导入spice器件详细教程以及库资源分享
  12. 什么是前端工程师?前端工程师需要掌握什么技能?
  13. Android车载蓝牙相关开发1:概述及准备
  14. Spring的事件处理
  15. 【程序人生】春满人间
  16. 【成神之路】开放设计编程相关面试题
  17. 主题模型(LDA)案例:分析人民网留言板数据
  18. [PHP响应式营销型万能H5建站系统源码] 免费开源建站利器+可视化自由布局页面
  19. 一招解决matplot绘图中文无法显示的问题
  20. 如何判断Android系统的版本

热门文章

  1. Linux---Linux是什么
  2. SpringSecurity(六)注销登录
  3. 高等数学 下册 第九章 平面及空间点集 笔记
  4. Qt:一个简洁漂亮的高仿网易云播放器
  5. seqCNA笔记-处理来自肿瘤样本的高通量测序拷贝数数据
  6. fastdfs磁盘满,如何清除文件?
  7. 在Word2019中,如何让回车符消失
  8. “PaaS+云管”双剑合璧,BoCloud博云的进阶之路
  9. 【K8S系列】快速初始化⼀个最⼩集群
  10. 奇迹,我拿什么征服你?