matlab eval 不显示,matlab中 eval(command); 运算符无效的问题
下面這個程序是haar-like特征提取-->haar-like關鍵點顯示-->haar-like特征人臉檢測代碼,該段代碼在運行時出現了如圖片所示的bug,本人看不懂這個bug出錯的根源:(各行代碼已有注釋,出錯的那一行代碼已經用黃色底紋標出,本段程序邏輯上的因果是連續的,不能只截取某一行或某幾行代碼作問題分析,所以提出的代碼段有些長,敬請諒解)
function locs = Untitled3(imageFile)
% 判斷參數
if nargin < 1
% 默認參數
imageFile = fullfile(pwd, 'C:\Users\Lenovo\Desktop\目標訓練樣本1.jpg');
end
% 讀取圖像
I = imread('C:\Users\Lenovo\Desktop\目標訓練樣本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:\Users\Lenovo\Desktop\目標訓練樣本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哈明窗带阻,基于matlab