完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 hahalm 于 2017-7-13 16:07 编辑
大佬们,下面是一个基于matlab的红色跟踪程序,它可以实时跟踪摄像头获取视频中的红色部分,可是我想把它改为可以实时跟踪摄像头获取视频中的黑色部分,注意是黑色部分,要怎么修改啊,我刚学MATLAB,对于运动目标的检测还不熟悉,希望大家可以帮帮忙,积分也不多,我是诚心提问的,谢谢大家了!!!a = imaqhwinfo;%[camera_name, camera_id, format] = getCameraInfo(a); % 为捕获的视频帧的视频输入功能%必须替换分辨率&安装的适配器名称。vid = videoinput('winvideo',1,'YUY2_320x240'); % 设置视频对象的属性 set(vid, 'FramesPerTrigger', Inf);set(vid, 'ReturnedColorspace', 'rgb')vid.FrameGrabInterval = 5; %启动视频采集在这里 start(vid) % 设置一个循环,在100帧的采集站 while(vid.FramesAcquired<=200) % 获取当前帧的快照 data = getsnapshot(vid); % 现在实时跟踪红色物体 %我们必须减去红色分量。 %从灰度图像中提取图像中的红色组件。 diff_im = imsubtract(data(:,:,3), rgb2gray(data)); %使用中值滤波器滤除噪声 diff_im = medfilt2(diff_im, [3 3]); % 将生成的灰度图像转换为二进制图像。 diff_im = im2bw(diff_im,0.18); % 将这些像素小于300px diff_im = bwareaopen(diff_im,300); % 标记图像中所有连接的组件。 bw = bwlabel(diff_im, 8); %这里我们做图像斑点分析。 %,我们为每个标记区域获取一组属性。 stats = regionprops(bw, 'BoundingBox', 'Centroid'); % 显示图像 imshow(data) hold on %这是一个将矩形框中的红色物体绑定的循环。 for object = 1:length(stats) bb = stats(object).BoundingBox; bc = stats(object).Centroid; rectangle('Position',bb,'EdgeColor','r','LineWidth',2) plot(bc(1),bc(2), '-m+') a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2))))); set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); end hold offend % 两个环路都在这里结束。 % 停止视频采集。 stop(vid); %刷新存储在内存缓冲区中的所有图像数据。 flushdata(vid); %清除所有的变量 clear allsprintf('%s','That was all about Image tracking, Guess that was pretty easy :) ') |
|
相关推荐
4个回答
|
|
我没有做过这类的,也没有细分析您的代码。但可以从原理上细分析一下看看能否有助:
无论什么采集一般采集到的信号到电脑后的颜色位RGB或再加上黑白,在您的题目中应该只有RGB色,R-红色了,只要设定一个阈值将G和B过滤掉,剩下的就是红黑色的了,程序中似乎有红色的站到总像素的x%就可以认为是对的了。同理:RGB都设定一个阈值,当信号小于此阈值表示为黑,因为RGB一样时为白。同样判定黑块的面积大于x%表示Ok。想想是这个理吗? |
|
|
|
zh***1 发表于 2017-7-14 15:40 现在实时跟踪红色物体 %我们必须减去红色分量。 %从灰度图像中提取图像中的红色组件。 diff_im = imsubtract(data(:,:,3), rgb2gray(data)); 谢谢您的回答,我就是这句看不懂,data(:,:,3)中的3要改为1就是提取红色,改为2就是提取绿色,改为3就是提取蓝色,他只能改为这三个数,改为其他的就出错了,麻烦请教一下要怎么改为提取黑色,麻烦前辈帮忙把我的程序改一下,万分感谢,我是真的没办法了,拜托了,谢谢前辈!!! |
|
|
|
我没有用过仿真类的软件,实在不知道应该如何改。只有以上的思路。Sorry。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1862 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
2133 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2946 浏览 0 评论
3285 浏览 0 评论
4116 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 00:59 , Processed in 0.600911 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号