Matlab 区域扫描,30+行Matlab代码实现文件扫描
图片处理前后对比
最近刚好看到一篇回答,用阈值二值化处理图片水印,受到启发写此代码。阈值二值化适合处理只有黑白两色的图片,考虑到文件盖章,这里作者使用像素颜色替换及灰度值处理图片,进一步提高处理精度和能力。
我们需要:Matlab软件,手机拍的文件图片
首先读入图片:
filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下
img=imread(filename);%读入图片
获取图片RGB值
R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);
获取矩阵大小(以像素为单位):
[x,y,z]=size(img);
筛选图片颜色:
这里,RGB数值不唯一,可以根据具体图片重新调整,特别是识别红色的if语句,需要反复调参。这里作者事先在PS里查看了原图红色区域RGB数值。如果你不会PS,那……总有别的办法搞到RGB吧……实在不行咱一点点调嘛。
当判断出不是红色后,将该像素的灰度计算出来。这里,灰度是用来判断“白”和“黑”的工具,当灰度大于某一值,我们认为其应该为白色,将该像素完全修改为白色。而我们认为的“黑”色不予改动。
ps:这样做的好处之一是,只让白的地方更白,其他比较复杂的区域未作改变,图片不至于偏离事实。
for i=1:x
for j=1:y
if ((R(i,j)>=100)&&(R(i,j)<=255)&&(G(i,j)<110)&&(B(i,j)<110))%识别红色
R(i,j)=255;%重新赋值
G(i,j)=70;
B(i,j)=70;
else%其他区域
%Gray = R*0.299 + G*0.587 + B*0.114 灰度与RGB转换公式
gray=R(i,j)*0.299+G(i,j)*0.587+B(i,j)*0.114;
if gray>120 %如果灰度值大于该阈值,修改其为白色
R(i,j)=255;
G(i,j)=255;
B(i,j)=255;
end
end
end
end
颜色覆盖:
这里我们将之前转换好的RGB图层全部赋值给res变量,res变量即最终结果。
ps:当图片较大时,这里会耗费比较多的时间,属于正常现象
for i=1:x
disp(['颜色覆盖',num2str(i/x*100),'%']);%显示进度
for j=1:y
res(i,j,1) = R(i,j);
res(i,j,2) = G(i,j);
res(i,j,3) = B(i,j);
end
end
图片保存:
imwrite(res,'stripes2.png');%保存图片
至此,这32行代码已经能自动将你手机拍的图片转换为“扫描文件”了
需要注意的是,拍摄图片的时候最好在文件正上方,拍完有条件地话可以裁剪一下,这些手机自带的软件都可以搞定。
全部完整代码如下:
clc;
clear all;
filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下
img=imread(filename);%读入图片
R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);
[x,y,z]=size(img);
for i=1:x
for j=1:y
if ((R(i,j)>=100)&&(R(i,j)<=255)&&(G(i,j)<110)&&(B(i,j)<110))%识别红色
R(i,j)=255;%重新赋值
G(i,j)=70;
B(i,j)=70;
else%其他区域
%Gray = R*0.299 + G*0.587 + B*0.114 灰度与RGB转换公式
gray=R(i,j)*0.299+G(i,j)*0.587+B(i,j)*0.114;
if gray>120 %如果灰度值大于该阈值,修改其为白色
R(i,j)=255;
G(i,j)=255;
B(i,j)=255;
end
end
end
end
disp('转换结束');
for i=1:x
disp(['颜色覆盖',num2str(i/x*100),'%']);%显示进度
for j=1:y
res(i,j,1) = R(i,j);
res(i,j,2) = G(i,j);
res(i,j,3) = B(i,j);
end
end
imwrite(res,'stripes2.png');%保存图片
disp('图片已保存');
end
Matlab 区域扫描,30+行Matlab代码实现文件扫描相关推荐
- 如何用python破解热点_用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快
原标题:用30行Python代码制作wifi万能钥匙,邻居家wifi网速好快 当我们拖着疲惫的身体下班回到家,想开开心心的吹着空调风扇吃着西瓜,然后手机连上wifi打一把游戏好好舒服下,然而家里wif ...
- 30行python代码设计_30行Python代码实现3D数据可视化
原标题:30行Python代码实现3D数据可视化 作者:潮汐 来源:Python技术 欢迎来到 编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 之前我们基本都是用它来绘 ...
- 王者荣耀——bat批处理文件,自动刷金币版(脱胎于30行Python代码刷金币版),Windows双击即可运行!
参考<30行Python代码刷王者荣耀金币>:https://segmentfault.com/a/1190000012520431 1.源代码 以下是源代码部分,全部复制到文本文档, 用 ...
- 30行Python代码实现蚂蚁森林自动偷能量
虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...
- 30 行Python代码实现蚂蚁森林自动收能量(附送源码)
公众号 "菜鸟学Python", 设为 "星标" 带你一起学Python 编辑:业余草 blog.csdn.net/article/details/113734 ...
- 30行Python代码实现蚂蚁森林自动偷能量(附源码)
虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...
- python30行代码_仅利用30行Python代码来展示X算法
假如你对数独解法感兴趣,你可能听说过精确覆盖问题.给定全集 X 和 X 的子集的集合 Y ,存在一个 Y 的子集 Y*,使得 Y* 构成 X 的一种分割. 这儿有个Python写的例子. X = {1 ...
- 30 行 Javascript 代码搞定智能家居系统
本文首发于『阿里云 IoT 开发者社区』,更多精彩物联网内容欢迎前往浏览. 智能家居可谓是今年物联网的热门领域,通过智能单品和智能音箱,人们已然把『智能』两个字变成了生活的理所应当.搭建云上之家除了买 ...
- python 车牌识别简单_简单30行Python代码让你玩转YOLO目标识别检测!
YOLO是一种实时目标检测算法,与faster R-CNN不同的是,YOLO不是过多的注重物体定位的精度,而是着重于速度和物体种类的识别.在实际应用中,实时性是目标检测中非常重要的,例如对于一辆自动驾 ...
最新文章
- 2019年上半年收集到的中国人工智能发展详情文章
- pip安装mysql-python失败,并显示EnvironmentError:找不到mysql_config
- 【FI模块学习笔记】 固定资产概述(上)
- Matlab 基于svm的图像物体分类
- 1045: 愚人节的礼物
- 教你50招提升ASP.NET性能(十五):解决性能问题时不要低估UI的价值
- Code First :使用Entity. Framework编程(7) ----转发 收藏
- stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...
- 使用Maven Failsafe和TestNG分别运行单元测试和集成测试
- [渝粤教育] 莆田学院 电机与拖动基础(一) 参考 资料
- 162. Find Peak Element
- Ubuntu的奇技淫巧
- Bootstrap 折叠插件Collapse 事件
- 谷歌浏览器 转方向_转专业 | 希望你们能在岔路口选对自己的路
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求--转载
- java oracle thin_????java thin 连接oracle url的几种写法
- ip访问次数统计 nginx_nginx访问量统计
- 用微软makecert.exe生成一个自签名的证书
- 电销机器人源码+图文介绍
- 阿里云认证(ACA/ACP/ACE)的分类以及官网价格
热门文章
- paddle深度学习框架中的FFT
- 测试信标灯的随机特性
- 国赛无望,兄弟尽力了
- 2021年信号与系统作业统计处理
- 《李宏毅机器学习特训营》免费开放!直播教学!
- FootSwitch脚踏开关:三位USB静音脚踏板脚踏开关脚踏键盘鼠标
- mysql emma 使用教材_emma的使用
- c语言求n个数的最小值博客,C语言中的#define宏定义 求一组数的最大值和最小值(转)...
- 电大计算机基础知识试题是什么样的,计算机应用基础知识(电大试题)
- java try catch嵌套_解析Java中未被捕获的异常以及try语句的嵌套使用