Octave图像反转实验报错:脚本与图片文件无法找到的解决方法
解决Octave脚本运行报错的方法
一、解决脚本文件找不到的问题
报错error: no such file, '/home/LinearAlgebraLab1.m'是因为Octave当前工作目录不在脚本所在文件夹,按以下步骤处理:
- 打开Octave后,用
cd命令切换到脚本LinearAlgebraLab1.m所在的文件夹。比如脚本存放在/home/你的用户名/Octave实验,就输入:cd /home/你的用户名/Octave实验 - 或者在Octave的左侧文件浏览器中找到脚本所在文件夹,右键选择「Set as working directory」(设置为工作目录)
- 运行脚本时,直接在命令行输入
LinearAlgebraLab1即可(无需加.m后缀)
二、解决图片文件找不到的问题
报错找不到.jpg图片是因为图片不在Octave当前工作目录,或路径/文件名错误,处理方法:
- 把
MonaLisa2.jpg复制到和LinearAlgebraLab1.m同一个文件夹里,这样脚本里的imread('MonaLisa2.jpg')就能直接找到图片 - 如果图片放在其他位置,修改
imread的参数为图片的绝对路径,比如:C = imread('/home/你的用户名/图片/MonaLisa2.jpg'); - 注意:Linux系统文件名区分大小写,确保图片文件名和脚本里写的完全一致(比如
MonaLisa2.jpg不能写成monalisa2.jpg)
三、修复脚本的潜在显示问题
原脚本处理后的像素值可能超出0-255范围,且类型不匹配,会导致图像显示异常,需要修改通道处理代码。以下是修改后的完整脚本:
%% import image C = imread('MonaLisa2.jpg'); %% set slopes and intercepts for color transformation redSlope = 1; redIntercept = -80; greenSlope = -.75; greenIntercept = 150; blueSlope = -.50; blueIntercept = 200; %% store RGB channels from image separately R = C(:,:,1); G = C(:,:,2); B = C(:,:,3); C2 = C; S = size(C); m = S(1,1); n = S(1,2); %% change red channel M = R; M2 = redSlope * cast(M,'double') + redIntercept * ones(m,n); M2 = clamp(M2, 0, 255); % 截断到0-255范围 C2(:,:,1) = uint8(M2); % 转回uint8类型 %% change green channel M = G; M2 = greenSlope * cast(M,'double') + greenIntercept * ones(m,n); M2 = clamp(M2, 0, 255); C2(:,:,2) = uint8(M2); %% change blue channel M = B; M2 = blueSlope * cast(M,'double') + blueIntercept * ones(m,n); M2 = clamp(M2, 0, 255); C2(:,:,3) = uint8(M2); %% visualize new image image(C2) axis equal tight off set(gca,'position',[0 0 1 1],'units','normalized')
内容的提问来源于stack exchange,提问作者sbreslin
相关产品推荐
相关产品推荐

