如何用MATLAB实现“截屏取色”功能
创作时间:
作者:
@小白创作中心
如何用MATLAB实现“截屏取色”功能
引用
CSDN
1.
https://blog.csdn.net/TGF_0425/article/details/143813614
本文将介绍如何使用MATLAB实现一个简单的“截屏取色”功能。这个功能可以让你截取电脑屏幕的图像,并通过鼠标点击获取指定像素点的颜色值。适合有一定MATLAB基础的读者学习。
基本功能
运行函数后,截取电脑整个屏幕并显示在MATLAB图窗上;用鼠标进行取点,按Enter按键完成取点,按ESC按键取消操作;取点完成后以n×3的矩阵返回上述点的RGB值。
代码实现
function CM = screenCapColor()
%% 截屏
% 创建Robot对象
robot = java.awt.Robot();
% 获取屏幕尺寸
rect = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
% 截取屏幕
img = robot.createScreenCapture(java.awt.Rectangle(rect));
w = img.getWidth(); %获取图像宽度
h = img.getHeight(); %获取图像高度
raster = img.getData(); %获取图像RGB数据,返回Raster类的对象
% 转换成MATLAB图像数组
I = zeros(w*h*3,1); %创建存储RGB像素信息的double数组
I = raster.getPixels(0,0,w,h,I); %获取图像一维RGB颜色数组
I = uint8(I); %转换成uint8数据类型
I1 = I(1:3:length(I)); %提取R色一维数组
I1 = reshape(I1,w,h); %转换为R色二维数组
I2 = I(2:3:length(I)); %提取G色一维数组
I2 = reshape(I2,w,h); %转换为G色二维数组
I3 = I(3:3:length(I)); %提取B色一维数组
I3 = reshape(I3,w,h); %转换为B色二维数组
I = uint8(zeros(w,h,3)); %创建存储RGB图像信息三维矩阵
I(1:w,1:h,1) = I1; %导入R色数组
I(1:w,1:h,2) = I2; %导入G色数组
I(1:w,1:h,3) = I3; %导入B色数组
I = imrotate(I,-90,'nearest'); %图像顺时针旋转90度
I = flip(I,2); %图像竖直镜像
% 显示图像
f1 = figure;
imshow(I);
%% 颜色提取并返回
[x,y] = ginput();
Num = length(x);
f = figure;
f.Position = [700,593,512,162];
CM = zeros(Num,3);
for i = 1:Num
% 显示点击处周围10*10的矩形区域
cropImg1 = imcrop(I,[x(i)-5 y(i)-5 10 10]);
subplot(1,Num,i)
imshow(cropImg1);
% 保留点击点颜色值
CM(i,:) = impixel(I,x(i),y(i));
end
close(f1)
end
运行结果
问题与进阶
上述方法通过MATLAB自带的ginput
函数进行取点,但该函数执行过程中无法进行其它任何操作,比如图片的缩放和平移,这使得图片中的微小部分难以选中,准确获取颜色。
如果需要实现更高级的功能,比如在取点过程中实现图片的缩放和平移,可以参考作者的另一篇文章《如何用MATLAB实现“截屏取色”功能(进阶版)》。
热门推荐
40年大学热门专业沉浮录:2024年高考志愿&考研专业又该如何选?
新瓶装旧酒——是谁杀死了勇者——简评
基本公积金和补充公积金的区别及含义解析
如何安全使用降压药?降压药的基本原则有哪些?这5个常识需了解
选秀再掀风云,但偶像公司何时才能回春?
高中数学:分段函数的零点问题(拔高)
伤亡322万人不等于阵亡322万,这些战争常识可别再搞混了
“狂犬病疫苗无法保证不感染”,三岁男童被狗咬伤离世,调查结果公布
投资机会识别:如何在股票市场中发现价值投资机会
Karpathy的AI课程全解析:从CS231n到最新的LLM101n
一文讲透房贷怎么选?等额本金还是等额本息?
十二经脉表里关系与交接规律
广州新玩法|闹市中的一隅宁静,感受岭南画派百年历史
云南昆明导游词:探索春城之美,从滇池到西山,一场不容错过的自然与人文之旅
咖啡怎麼喝?有哪些好處?正確攝取咖啡因,提神、提升代謝,還能增加三成燃脂率
探索广州:美食家的街头小吃和宝石指南
实用麦克风话筒音频放大器电路设计和电路图
安徽省科技赋能提成效,精准御险护安澜
Excel表格数据如何投射到图表
酸菜鱼的家常做法,鱼片没腥味,操作简单,味道正宗,好吃又下饭
挑选完美耳机:除音质外,还需关注的6个因素,忽略掉1个都后悔
什么是大男子主义表现 大男子主义对婚姻有什么影响
适合海外儿童的10本中文分级读物与10个免费中文分级阅读网站详细推荐
单日最高客流105万人次,这个老商圈为何能这么火?
探秘云南高山奇果:红果蜘蛛的独特魅力
睡着时为何大脑依然活跃?Nature论文揭示神经元在睡眠期间清除大脑废物
追踪1400多名百岁老人后发现:长寿“秘诀”是这3点,照着做准没错!
关于平方米与平方厘米面积单位换算的实用知识与应用解析
异地就医备案指南:步骤详解
什么是标准正态分布