matlab如何用代码导入文件_20+行Matlab代码实现文件扫描

7bdcc877aaf05f8bcd609da5e64a7d43.png

最近刚好看到一篇回答,用阈值二值化处理图片水印,受到启发写此代码。阈值二值化适合处理只有黑白两色的图片,考虑到文件盖章,这里作者使用像素颜色替换及灰度值处理图片,进一步提高处理精度和能力。

我们需要:Matlab软件,手机拍的文件图片

2019.2.22修改:根据评论区建议,删除循环,将代码全部矩阵化

首先读入图片

filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下
img=imread(filename);%读入图片

获取图片RGB值

R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);

筛选图片红色

red=(R>=100).*(R<=255).*(G<110).*(B<110);%判断是否为红色并得到红色区域布尔矩阵
%这里的.*为矩阵元素各自相乘,直接使用*为矩阵乘法
%这里偷了个懒,乘法在这里的作用是矩阵相与%修改红色区域颜色
R(red==1)=255;
G(red==1)=70;
B(red==1)=70;

这里,RGB数值不固定,可以根据具体图片重新调整。这里作者事先在PS里查看了原图红色区域RGB数值。如果你不会PS,那……总有别的办法搞到RGB吧……实在不行咱一点点调嘛。

808598eda965005efff7c5296b417506.png
在PS中查看像素RGB值

筛选图片白色

将所有像素的灰度值计算出来。这里,灰度是用来判断“白”和“黑”的工具,当灰度大于某一值,我们认为其应该为白色,将该像素完全修改为白色。其余颜色不予改动。

gray=R.*0.299+G.*0.587+B.*0.114;%灰度值计算,得到灰度值矩阵
white=(gray>120)-red;%将灰度中的红色区域剔除,得到白色矩阵%将白色区域完全变白
R(white==1)=255;
G(white==1)=255;
B(white==1)=255;

ps:这样做的好处之一是,只让白的地方更白,其他比较复杂的区域未作改变,图片不至于偏离事实。

颜色覆盖

这里我们将之前转换好的RGB图层全部赋值给res变量,res变量即最终结果。

res(:,:,1)=R(:,:);
res(:,:,2)=G(:,:);
res(:,:,3)=B(:,:);

图片保存

imwrite(res,'stripes2.png');%保存图片

至此,这20行代码已经能自动将你手机拍的图片转换为“扫描文件”了

需要注意的是,拍摄图片的时候最好在文件正上方,拍完有条件地话可以裁剪一下,这些手机自带的软件都可以搞定。

全部完整代码如下:

clc;
clear all;
filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下
img=imread(filename);%读入图片
%获取RGB图层
R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);red=(R>=100).*(R<=255).*(G<110).*(B<110);%判断是否为红色并得到红色区域布尔矩阵
%这里的.*为矩阵元素各自相乘,直接使用*为矩阵乘法
%这里偷了个懒,乘法在这里的作用是矩阵相与%修改红色区域颜色
R(red==1)=255;
G(red==1)=70;
B(red==1)=70;gray=R.*0.299+G.*0.587+B.*0.114;%灰度值计算,得到灰度值矩阵
white=(gray>120)-red;%将灰度中的红色区域剔除,得到白色矩阵%将白色区域完全变白
R(white==1)=255;
G(white==1)=255;
B(white==1)=255;disp('转换结束');res(:,:,1)=R(:,:);
res(:,:,2)=G(:,:);
res(:,:,3)=B(:,:);imwrite(res,'stripes2.png');%保存图片
disp('图片已保存');

原图是我在网上随便找的一张,作者使用的软件是Matlab R2016a

文件处理效果如下:

a155eddeef07c237e9f5093ba4bd4049.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动django服务器报错raise errorclass(errno, errval) django.db.utils.InternalError

问题描述&#xff1a; 启动django服务器python manage.py runserver报错: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;与mysql数据库…

java单例模式之线程安全问题

单例的目的是为了保证运行时Singleton类只有唯一的一个实例&#xff0c;用于一些较大开销的操作。 饿汉式&#xff08;没有线程安全问题&#xff09;: ‘ 由于使用static关键字进行了修饰&#xff0c;只能获取到一个对象&#xff0c;从而达到了单例&#xff0c;并且在Singleton…

448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数

&#xff3b;抄题&#xff3d;&#xff1a; Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it with…

Linux基本命令+Makefile

1.linux下查看进程占用cpu的情况(top)&#xff1b; 格式 top [&#xff0d;] [d delay] [q] [c] [S] [s] [i] [n] 主要参数 d&#xff1a;指定更新的间隔&#xff0c;以秒计算。q&#xff1a;没有任何延迟的更新。如果使用者有超级用户&#xff0c;则top命令将会以最高的优先…

mysql语法题_mysql数据库题语法练习

一、练习。导入下面sql执行语句/*数据导入&#xff1a;Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version …

OpenGL开发库的详细介绍

OpenGL开发库的组成 开发基于OpenGL的应用程序&#xff0c;必须先了解OpenGL的库函数。它采用C语言风格&#xff0c;提供大量的函数来进行图形的处理和显示。OpenGL库函数的命名方式非常有规律。所有OpenGL函数采用了以下格式<库前缀><根命令><可选的参数个数&g…

thinkphp5运行原理_ThinkPHP5.1~5.2全版本远程代码执行高危漏洞预警

漏洞综述关于ThinkPHPThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架&#xff0c;其借鉴了国外很多优秀的框架和模式&#xff0c;包括使用面向对象的开发结构和MVC模式&#xff0c;融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式等。该框架常…

ASP.NET MVC中controller和view相互传值的方式

ASP.NET MVC中Controller向view传值的方式&#xff1a; ViewBag、ViewData、TempData单个值的传递Json匿名类型ExpandoObjectCookieViewModel(向普通View页面传个Model对象、向强类型页面传一个Model对象、用一个ViewModel对象解决所有问题)ASP.NET MVC中view向Controller传值的…

Linux内核中的常用宏container_of其实很简单【转】

转自&#xff1a;http://blog.csdn.net/npy_lp/article/details/7010752 开发平台&#xff1a;Ubuntu11.04 编 译器&#xff1a;gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Container_of在Linux内核中是一个常用的宏&#xff0c;用于从包含在某个结构中的指针获得结构本…

mysql concat例子_MYSQL中CONCAT详解

concat()函数1. 功能&#xff1a;返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。2. 语法concat(str1, str2,...)3. 例子案例一&#xff1a;mysql> select concat(苹果,香蕉,梨子);------------------------------| CONCAT(苹果,香蕉…

mysql php7安装配置_centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6-Go语言中文社区...

centos7无网络下安装部署php7.1.33mysql5.7.28apache2.4.6一、1、先ping www.baidu.com&#xff0c;root账户下&#xff0c;如果未联网&#xff0c;创建目录&#xff0c;把提前下载好的rpm包拷贝到rpm目录下如图&#xff1a;(如果没有安装包请查看我的另一篇教程下载这些安装包…

webkit渲染

2019独角兽企业重金招聘Python工程师标准>>> 参考链接 理解WebKit和Chromium 简明魔法学院 Chrome软件渲染 WebKit渲染基础 Webkit 渲染基础 Webkit不是浏览器,它是一个渲染引擎 软件渲染 硬件渲染(GPU加速) 会触发GPU加速的属性 CSS3 3D transformation, trans…

element ui中dialog相关问题

一&#xff0c;今天需要在dialog里面引入另一个页面&#xff0c;就是打开dialog显示该页面&#xff08;把页面放到dialog中&#xff09;&#xff0c;引入的语句如下&#xff1a; <iframe src"view?pathrkdj_b" ></iframe> 二&#xff0c;使用table组件时…

spark java教程_(Spark)学习进度十四(Spark之Java独立应用编程)

环境如下:(更新了林子雨教程中不可使用的部分) Hadoop 2.6.0以上 java JDK 1.7以上 Spark 3.0.0-preview2 二、java独立应用编程(在下载依赖jar包的过程中如遇到卡顿现象可以Ctrl+C停止下载,然后重新执行本条命令即可继续下载相应的依赖jar包) 1、安装maven ubuntu中没有自带…

[零基础学JAVA]Java SE应用部分-34.Java常用API类库

本季目标1、StringBuffer类 2、Runtime 类 3、包装类与JDK 1.5的新特性——泛型 4、日期的操作类 5、Math类 6、Random类1、StringBuffer&#xff08;重点&#xff09; String 类的时候说过&#xff1a;String 类的内容一旦声明则不可改变&#xff0c;改变的只是其地址。…

我所理解的机器学习

各位请移步到【http://www.cnblogs.com/cchHers/p/8945908.html】转载于:https://www.cnblogs.com/cchHers/p/8933042.html

protobuf java文档_Java中使用Protobuf

gradle依赖库&#xff1a;implementation com.google.protobuf:protobuf-java:3.4.0implementation com.google.protobuf:protobuf-java-util:3.4.00.编写.proto文件&#xff0c;编译生成对应Java源文件&#xff1a;syntax "proto2";option java_generic_services …

多租户表设计

2019独角兽企业重金招聘Python工程师标准>>> multi-tenant-databases-in-the-cloudtips-amp-tricks-to-build-multi-tenant-databases-with-sql-databases团队开发框架实战—多租户支持转载于:https://my.oschina.net/yangjiandong/blog/1612626

CSS实现树形结构 + js加载数据

看到一款树形结构&#xff0c;比较喜欢它的样式&#xff0c;就参照它的外观自己做了一个&#xff0c;练习一下CSS。 做出来的效果如下&#xff1a; 拉莫小学 一年级 一班二班二年级三年级 一班二班三班树的dom结构&#xff1a; <div class"tree"><ul><…

Django中--自定义模型管理器类

BookInfo.objects.all()->objects是一个什么东西呢&#xff1f; 答&#xff1a;objects是models.Manger类的一个对象&#xff0c;是Django帮我自动生成的管理器对象&#xff0c;通过这个管理器可以实现对数据的查询。 自定义管理器之后Django不再帮我们生成默认的objects管…