我是靠谱客的博主 斯文小馒头,最近开发中收集的这篇文章主要介绍matlab eval 不显示,matlab中 eval(command); 运算符无效的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面这个程序是haar-like特征提取-->haar-like关键点显示-->haar-like特征人脸检测代码,该段代码在运行时出现了如图片所示的bug,本人看不懂这个bug出错的根源:(各行代码已有注释,出错的那一行代码已经用黄色底纹标出,本段程序逻辑上的因果是连续的,不能只截取某一行或某几行代码作问题分析,所以提出的代码段有些长,敬请谅解)

function locs = Untitled3(imageFile)

% 判断参数

if nargin < 1

% 默认参数

imageFile = fullfile(pwd, 'C:UsersLenovoDesktop目标训练样本1.jpg');

end

% 读取图像

I = imread('C:UsersLenovoDesktop目标训练样本1.jpg');

% 灰度处理

if ndims(I) == 3

I = im2double(rgb2gray(I));

else

I = im2double(I);

end

% 命令构建

command='E:33573 程序与数据程序与数据(17日更新)fig13-基于HaarLike的人脸检测HaarLike.exe';

command = sprintf('%s %s', command, imageFile);

% 执行

eval(command);

% 获取结果数据

loc = load('E:33573 程序与数据程序与数据(17日更新)fig13-基于HaarLike的人脸检测tmp.key');

% 高斯平滑

g1 = fspecial('gaussian', 7, 1);

gray_image = imfilter(I, g1);

% 空间滤波

h = fspecial('sobel');

Ix = imfilter(gray_image,h,'replicate','same');

Iy = imfilter(gray_image,h','replicate','same');

% 参数配置

sigma = 2;

thd = 0.05;

r = 2;

% 高斯滤波

g = fspecial('gaussian',fix(6*sigma), sigma);

Ix2 = imfilter(Ix.^2, g, 'same').*(sigma^2);

Iy2 = imfilter(Iy.^2, g, 'same').*(sigma^2);

Ixy = imfilter(Ix.*Iy, g, 'same').*(sigma^2);

% 计算haar特征域

R = (Ix2.*Iy2 - Ixy.^2)./(Ix2 + Iy2 + eps);

d = 2*r+1;

% 提取特征点

localmax = ordfilt2(R,d^2,true(d));

R = R.*(and(R==localmax, R>thd));

% 去除四周噪声点

R([1:r, end-r:end], :) = 0;

R(:,[1:r,end-r:end]) = 0;

% 提取有效特征点

[xp,yp,~] = find(R);

% 存储并返回

locs{1} = loc;

locs{2} = [yp, xp];

% 显示关键点

function disp_haar_like_feature(image, locs)

% 显示窗口

figure('Position', [50 50 size(image,2) size(image,1)]);

% 色彩类型

colormap('gray');

% 显示

imagesc(image);

hold on;

% 角度变量

t = linspace(0, 2*pi);

for i = 1: size(locs{1},1)

% 生成位置x

xt = locs{1}(1) + locs{1}(3)*cos(t);

% 生成位置y

yt = locs{1}(2) + locs{1}(3)*sin(t);

% 显示

plot(xt, yt, 'r:', 'LineWidth', 2);

end

% 绘制特征点

plot(locs{2}(:,1), locs{2}(:,2), 'r*');

hold off;

clc; clear all; close all;

% 选择图像

imageFile = fullfile(pwd, 'C:UsersLenovoDesktop目标训练样本1.jpg');

image_origin = imread(imageFile);

% haar_like算子

loc = get_haar_like_feature(imageFile);

% 显示关键点

disp_haar_like_feature(image_origin, loc);

最后

以上就是斯文小馒头为你收集整理的matlab eval 不显示,matlab中 eval(command); 运算符无效的问题的全部内容,希望文章能够帮你解决matlab eval 不显示,matlab中 eval(command); 运算符无效的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部