AiGWan 2021-09-15 21:13 采纳率: 100%
浏览 1541
已结题

为什么我的这个逻辑索引包含一个超出数组范围的 true 值

我看了您的案例,然后我照做,但为什么我的结果总是“逻辑索引包含一个超出数组范围的 true 值”,我想把前一张图变成后一张图。下面是代码,请您帮忙看看,谢谢您了。

img

img

img

  • 写回答

3条回答 默认 最新

  • 技术专家团-Joel 2021-09-15 21:32
    关注

    你好,同学,请顺便把你看的博文连接发过来一下,我给你找找错误

    已经看了博文,发现运行一点问题都没有,非常丝滑!!!~~~
    我把imagepath和subimgpath都设置为同一张图片,没有任何问题,只要图片在当前工作路径里

    imagepath = '20190903221520229.jpg'; %待处理图片
    subimgpath = '20190903221520229.jpg'; %可以选择填充子图
    sz =3;         %设置块的大小
    thresh = 125/255;       %灰度阈值
    blackthresh = 0.6;  %小格子黑色大于这个值小格子为黑
    hasline = 1; %设置分割线条为1 其他值为没有
    linecolor = 0; %设置分割线条颜色
    pixpath = 'a.txt'; %设置最后像素矩阵的路径
     
    A=imread(imagepath);      %读取到一张图片   
    B = imread(subimgpath);   %小块换成图片也可
    %figure();%图片太大截图
    %A=A(1:360,600:961);
    %imshow(I2)
    B = rgb2gray(B);
    IB=imresize(B,[sz+1,sz+1]);
    %thresh = graythresh(A);     %自动确定二值化阈值
    I2 = im2bw(A,thresh); %对图像二值化
    I2=imresize(I2,[600,600]);%太大的图像需要缩小
    figure();
    imshow(A);    %显示二值化之前的图片
    title('原图'); 
    imshow(I2);    %显示二值化之后的图片
    title('二值化'); 
     
    
    %I2=1*ones(16)
    I2 = uint8(I2);
    rs = size(I2, 1); cs = size(I2, 2);%取图像的行列数
    ch = sz; cw = sz;
     
     
    numr = rs/sz;
    numc = cs/sz;
    tagm = zeros(numr,numc);
    t1 = (0:numr-1)*ch+1 ;
    t3 = (0:numc-1)*cw+1;
    figure;
    for i = 1 : numr-1
        for j = 1 : numc-1
            if hasline == 1
                I2(t1(i),:,:)=linecolor;  %设置分割线条
                I2(:,t3(j),:)=linecolor;
            end
            if sum(sum(I2(t1(i)+1:t1(i)+sz,t3(j)+1:t3(j)+sz)==0))/(sz*sz)>blackthresh
                I2(t1(i):t1(i)+sz,t3(j):t3(j)+sz)=0;
                tagm(i,j)=1;
            else
                I2(t1(i):t1(i)+sz,t3(j):t3(j)+sz)=255;
                tagm(i,j)=0;
            end
        end
    end
    imshow(I2);
    fid=fopen(pixpath,'wt');%改为你自己文件的位置
    [m,n]=size(tagm);
    for i=1:m
    for j=1:n
    if j==n
    fprintf(fid,'%g\n',tagm(i,j));
    else
    fprintf(fid,'%g\t',tagm(i,j));
    end
    end
    end
    fclose(fid);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月15日

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀