【ChatGPT助我开发】利用ChatGPT编写基于Matlab的SVM的蔬菜分类项目

序言

从去年12月份开始用ChatGPT,一直被惊艳到,然后问一些奇怪的问题,到现在助力开发,我发现合适的提示词(Prompt)会很大程度影响到生成的质量,我在开发的过程中也会逐渐完善修改,最终能完美的写出合适的代码。当然进程的时候会发现ChatGPT会犯一些小错误,在有一定知识基础之下,开发还是非常快的。

数据集

首先,我做的是蔬菜分类项目,理所应当的需要一些图片,这里收集了分别三种蔬菜,各30张图片作为训练集。图片大概长这个样子
在这里插入图片描述

开始交流

首先我大概说了一下我的需求,就是用SVM做一个物品分类的项目,他给我列了一个示例。

在这里插入图片描述
但是呢,我觉得我是需要读取三个文件夹的不同内容,这部分内容百度一下肯定不难,但是捏,本着能偷懒就偷懒的态度,我修改了一下,又提了一个需求。告诉我他我有三个文件夹,也有三种图片,进行三分类。于是他又给了我一串代码

在这里插入图片描述
其实这时候看会觉得还不错,就是基本上你设置一下路径名字,和文件类型,然后就能使用了,于是兴致冲冲的复制过去运行,这个时候发现报错了,因为他给我了一个函数extractFeaturesFromImage(imagePath),这个函数实际上是不存在的,我需要设置一下特征提取方法。当然这个时候我是不知道的,于是我又开始询问了
在这里插入图片描述

在这里插入图片描述
这个时候它有告诉我了一些常用的特征提取方法,这个时候我就觉得哇这个真的好强大,作为一个工具会发现特别好用,然后我让他用HOG方法生成一个特征提取函数,再给我重新生成一下。这个时候代码基本上大致上完成了,但是还是有一些小问题,在运行中报错了,第一个就是报错shape大小不一致,这个错误在图片处理中很常见,我发现代码并没有给我一个图片预处理的部分,不同的图像大小不一致,所以我又要求让他给我做归一化操作。当然,完美解决了。
在这里插入图片描述
可是他还是报错了,emmmm好吧,继续问,继续解决。免费的3.5还是有点不太行呀hahhh。
在这里插入图片描述
但是他还是给我修复了,这一版代码就可以使用了,而且发现在识别准确率上面还是非常高的,NICE!这个过程开发不到半个小时,就能用matlab这个不太熟悉的语言开发一个简单的应用,换做以前这半个小时查个api都能给我人查晕哈哈哈哈,下面贴出完整版代码吧!

% 物品分类示例 - 读取三个文件夹的图片进行分类% 1. 准备数据
% 假设您有三个文件夹,每个文件夹包含一种类型的图像。
% 在这个示例中,我们假设三种类型的图像分别存储在文件夹A、文件夹B和文件夹C中。% 设置文件夹路径
folderA = './carrot';
folderB = './chili';
folderC = './pumpkin';
% 使用HOG特征进行分类(包括图像大小归一化)% 读取文件夹A中的图像
imageFilesA = dir(fullfile(folderA, '*.png')); % 根据图像文件类型进行修改
numImagesA = numel(imageFilesA);% 读取文件夹B中的图像
imageFilesB = dir(fullfile(folderB, '*.png')); % 根据图像文件类型进行修改
numImagesB = numel(imageFilesB);% 读取文件夹C中的图像
imageFilesC = dir(fullfile(folderC, '*.png')); % 根据图像文件类型进行修改
numImagesC = numel(imageFilesC);% 创建特征矩阵和类别向量
numFeatures = 34596; % HOG特征向量的维度
numImagesTotal = numImagesA + numImagesB + numImagesC;X = zeros(numImagesTotal, numFeatures);
y = strings(numImagesTotal, 1);% 提取特征并标记类别
for i = 1:numImagesAimagePath = fullfile(folderA, imageFilesA(i).name);% 读取图像并进行大小归一化image = imread(imagePath);resizedImage = imresize(image, [256, 256]); % 调整图像大小为256x256% 提取图像的HOG特征并将其存储在特征矩阵中feature = extractHOGFeaturesFromImage(resizedImage); % 调用HOG特征提取函数X(i, :) = feature;% 将类别标签存储在类别向量中y(i) = '胡萝卜;price';
endfor i = 1:numImagesBimagePath = fullfile(folderB, imageFilesB(i).name);% 读取图像并进行大小归一化image = imread(imagePath);resizedImage = imresize(image, [256, 256]); % 调整图像大小为256x256% 提取图像的HOG特征并将其存储在特征矩阵中feature = extractHOGFeaturesFromImage(resizedImage); % 调用HOG特征提取函数X(numImagesA + i, :) = feature;% 将类别标签存储在类别向量中y(numImagesA + i) = '辣椒;price';
endfor i = 1:numImagesCimagePath = fullfile(folderC, imageFilesC(i).name);% 读取图像并进行大小归一化image = imread(imagePath);resizedImage = imresize(image, [256, 256]); % 调整图像大小为256x256% 提取图像的HOG特征并将其存储在特征矩阵中feature = extractHOGFeaturesFromImage(resizedImage); % 调用HOG特征提取函数X(numImagesA + numImagesB + i, :) = feature;% 将类别标签存储在类别向量中y(numImagesA + numImagesB + i) = '南瓜;price';
end% 2. 训练SVM模型
% 使用fitcecoc函数来训练SVM模型,并使用'Linear'作为线性核函数。
svmModel = fitcecoc(X, y, 'Learners', 'svm', 'Coding', 'onevsall', 'Learner', 'linear');% 3. 进行预测
% 假设您有一个新的图像需要进行分类预测。
% 提取新图像的HOG特征并存储在newFeature中
newImagePath = './testPhoto/3.png'; % 根据您的新图像路径进行修改
newImage = imread(newImagePath);
resizedNewImage = imresize(newImage, [256, 256]); % 调整图像大小为256x256
newFeature = extractHOGFeaturesFromImage(resizedNewImage); % 调用HOG特征提取函数
predictedLabel = predict(svmModel, newFeature);% 4. 显示结果
disp(['预测结果:' predictedLabel]);
imshow(imread(newImagePath));
% HOG特征提取函数
function features = extractHOGFeaturesFromImage(image)% 将图像转换为灰度图像grayImage = rgb2gray(image);% 计算HOG特征hogFeatures = extractHOGFeatures(grayImage);% 返回HOG特征向量features = hogFeatures;
end

有代码有注释,结构异常清楚,自愧不如啊,写的比我好太多了!

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

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

相关文章

matlab绘图常用函数及代码

1、绘图:plot /semilogy /loglog /scatter figure(1); subplot(1,2,1);%子图 axis([0 10 10^-5 10^-1]);%限制作图范围,x轴0~10,y轴10^-5到10^-1 plot(X,Y,Color,[R G B],LineStyle,-,Marker,o,LineWidth,1); hold on; grid on;%显示网格 &…

HR怀疑程序员简历造假,随后的做法引起网友热议:过分了

简历可以说是求职过程中最重要的一份材料,因此不少人对简历都精心准备,以便全面地展示自己。对企业来说,简历最重要的一点便是真实。可以说所有公司对简历造假都是保持零容忍的态度。最近,一位HR网友在职场社区分享了他怀疑程序员…

程序员简历优化之道

作者:安晓辉 声明:原创文章,禁止各种形式的转载。 为什么你投十份简历,只有一两家公司约你?又或者为什么你每投一份简历都能获得面试机会? 最根本的原因,就是一方在汲汲渴求,而恰恰…

别再胡乱写简历了,一份适合普通大众的简历模版,送给大家

今天我们就来聊一聊在校招时,简历该如何写的问题。说实话,对于简历的书写方式,可能不同的人会有不同的见解,并且不同的面试官/HR在筛选的时候也会有所差异,所以在我看来,不存在一种绝对稳的简历模版。 我在…

聊求职:写简历的大原则与小技巧

简历,是求职者向未来雇主展示专业技能和职业素养的自我推销工具,是赢得面试机会的敲门砖。如果没有面试邀约,大多只有两种可能:要么是简历写的太屎了,要么是简历投的太屎了。所以,当没有面试机会的时候&…

用 Markdown 写炫酷简历,助力跳槽换工作

大家好我是徐小夕。 今天给大家来介绍一个简历制作神器,是我的朋友秋风开发的。这个项目是一款免费在线简历制作工具,通过将书写的Markdown 和选择的主题快速转化不同风格的简历, 同时还可以一键复用其他人做的优秀的简历, 助力求职者快速制作精美的简历…

分享162个助理类简历模板,总有一款适合您

分享1626个助理类简历模板,总有一款适合您 162个助理类简历模板下载链接:https://pan.baidu.com/s/1Uy3eXPz9D-wK-l7z3KDIWQ?pwdl139 提取码:l139 Python采集代码下载链接:采集代码.zip - 蓝奏云 class ChinaZJsSelenium:ba…

掌握这些写简历投简历的“黑魔法”,告别简历已读不回!

“哎,我还能找到工作吗?” 这是最近加我微信的好友,问的最多的一句话。 太卷了 最近加我微信的朋友很多,我都很奇怪,最近也没怎么发文章,怎么会有这么多人加我。 大概就是因为太卷了,之前写的…

简历优化实战案例01:工作经历篇

大家好,我是小谭。 最近,我在帮一位求职者修改简历时,发现一些求职者常犯的简历错误。在征得求职者同意后,我粘出来,同大家分享和交流,期望通过此分享,让大家了解写简历的常见坑和注意点。 本…

分享111个助理类简历模板,总有一款适合您

分享111个助理类简历模板,总有一款适合您 111个助理类简历模板下载链接:https://pan.baidu.com/s/1JafYuLPQMmq37K4V0wiqWA?pwd8y54 提取码:8y54 Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj 设计师助理…

找工作的程序员应该这样优化简历【内附120套优质简历模板】

《花千骨》一剧,白子画为什么收花千骨为徒? 《琅琊榜》中,梅长苏为什么选靖王而弃太子、誉王? 《泰坦尼克号》里,杰克和露丝为什么会一见钟情? 王子基特为什么会选择灰姑娘辛德瑞拉? 这些问题乍…

易语言易语言浏览器html5,易语言创建的浏览器源码

易语言创建的浏览器源码系统结构:事件_编辑框1_获得焦点,事件_选择夹1_鼠标右键按下,子程序_删除页面,事件_窗口1_尺寸被改变,事件_选择夹1_子夹被改变,子程序_添加页面,事件_浏览器_即将跳转,事件_浏览器_即将打开新窗口3,事件_浏览器_标题被改变,事件_编辑框1_按下某键,SkinH…

易语言 普通填表 html5,易语言网页填表源码

易语言网页填表源码系统结构:passport_tianya,passport_xinlang,passport_baidu,Automatic_modification,Insert_text,Loadconfiguration, 窗口程序集1 || ||------_按钮8_被单击 || ||------_按钮11_被单击 || ||------passport_tianya || ||------passport_xinlang || ||----…

易语言启动局域网计算机程序,易语言局域网计算机监控源码

易语言局域网计算机监控源码系统结构:取计算机列表,弹出提示窗,上下线, 窗口程序集1 || ||------__启动窗口_创建完毕 || ||------取计算机列表 || ||------_选择框1_被单击 || ||------_时钟1_周期事件 || ||------_按钮1_被单击 || ||------_按钮2_被单击 || ||------__启动窗…

易语言在线播放器源码php,易语言视频播放器源代码

用简单的语言编写视频播放器的源代码 源代码包含以下功能: *调用Thunder APlayer SDK进行视频播放*自动检测是否下载Thunderbolt解码库,如果不存在,则自动下载并解压缩(新手可以学习)新手可以学习)*支持快捷键可快进和快退以及将音量最多增加或减小至1000 *自动截取本地视频缩…

易语言PHP自动更新,易语言自动更新源码

作为软件制作者,很多时候,我们都需要自动更新来约束软件使用者。尽管有些人不愿意更新,但是长久使用老版本毕竟不是长久之策。小编这里给大家带来易语言自动更新的源码模块,放入你的软件中正合适,需要的话就来试试吧&a…

易语言html截图,易语言窗口截图源码

易语言窗口截图源码系统结构:子程序1,PaintRect,SetTimer,GetCursorPos,WindowFromPoint,KillTimer,GetWindowRect,CreateDC,IsRectEmpty,PatBlt,DeleteDC,SetParent,GetParent, 窗口程序集1 || ||------__启动窗口_创建完毕 || ||------_图形按钮1_鼠标左键被按下 || ||------…

易语言 网页访问伪造ip

一、x-forwarded-for协议头 在精易网页助手的提交协议头加入 x-forwarded-for: ip地址最后生成的代码(部分): .版本 2ADD_协议头.添加 (“x-forwarded-for”, 参_ip, ) 局_提交协议头 = ADD_协议头.获取协议头数据 ()局_结果 &…

易语言拖拽文件获取文件路径

一. 易语言软件配置 1. 点击工具 2. 配置如下,点击确定 3. 二 . 创建窗口 1. 在左侧程序数据点击右键 选择创建窗口 2. 程序载入窗口 3. 然后启动程序就可以有有程序窗口了三. 添加组件 1.添加如下三个组件 拖放组件配置 接收文件选择真 2.注册拖放组件 3.注册成功之后 …

易语言 php post,易语言POST发送邮件

易语言自带的发信,有一点不好的是,会暴露帐号信息,因为他是明文显示的。 上文说到,”使用phpmail发送邮件“,本文将对接到易语言(前提是你已经把上文的源码部署好,并测试可以正常发送后在来本文),从而实现易语言post发送邮件的功能。 .版本 2 .支持库 spec .程序集 窗口…