使用在一致背景下拍摄的服装图像,我想使图像中的所有像素都透明,除了衣服.最好的方法是什么?我研究了常见的算法和开源库opencv.除了滚动我自己或使用opencv有一个简单的方法来做到这一点?我对任何语言或平台都持开放态度.
谢谢
image image-processing computer-vision edge-detection background-subtraction
我正在寻找在图像上减去背景.我是MATLAB的新手,也是图像处理/分析的新手,很抱歉,如果这些听起来很愚蠢.1)除了imsubtract()之外还有其他方法可以进行背景减法(除了将一个图像与另一个图像进行比较)之外?2)在imsubtract()的Math Works 解释中,为什么它们的结构元素是磁盘?到目前为止,这似乎相当困难,因为每次我尝试的东西,我最终不仅减去嘈杂的背景,而且还失去了我想看的图像部分!
假设您正在拍摄视频(相机处于稳定位置)并且一只鸟飞过相机的视野.应该可以进行图像分割并自动从视频中删除此鸟.
这些算法的样式是什么?它们通常是如何完成的?
我需要在网络摄像头的视频帧中进行强大的运动检测和跟踪.背景总是一样的.目的是识别物体的位置,如果可能的话没有阴影,但不是那么迫切地去除阴影.我已经尝试过opencv算法进行背景减法和阈值处理,但这只取决于一个图像作为背景,如果背景亮度变化一点(或相机自动对焦),我需要算法强大亮度或阴影稍有变化.
opencv motion-detection object-detection background-subtraction
背景扣除是计算机视觉中的一个重要原语。我正在研究已经开发的不同方法,并且我已经开始考虑如何在面对随机、椒盐噪声时执行背景扣除。
在 Microsoft Kinect 等系统中,红外摄像头会相当一致地发出随机噪声。如果您尝试从深度视图中减去背景,如何在可靠地减去背景的同时避免这种随机噪声的问题?
对于什么样的应用程序,我可以使用beagleboard的dsp核心?我可以在OpenCV中将DSP加速用于背景减法算法吗?
我尝试使用BackgroundSubtractorMOG来删除背景但是有一些对象已经离开了框架,但BackgroundSubtractorMOG.apply()的结果仍然显示对象仍在场景中.
这是我的代码
inputVideo = cv2.VideoCapture('input.avi')
fgbg = cv2.BackgroundSubtractorMOG()
while inputVideo.isOpened():
retVal, frame = inputVideo.read()
fgmask = fgbg.apply(frame)
cv2.imshow('Foreground', fgmask)
cv2.imshow('Original', frame)
if cv2.waitKey(1) & 0xFF == 27:
break
Run Code Online (Sandbox Code Playgroud)
我也尝试过BackgroundSubtractorMOG和自定义参数(历史= 200,nmixtures = 5,比率= 0.8)但结果是一样的.我做错了什么或有任何推荐吗?请帮忙.
我使用opencv进行车辆计数过程.如何将BackgroundSubtractorMOG对象(如BackgroundSubtractorMOG2等)保存到文件中,以便我可以从文件中读取它,再次使用训练好的背景模型而无需长时间训练?
我正在开发一个项目,使用背景扣除来检测感兴趣的对象,并使用 OpenCV C++ 中的光流来跟踪它们。我能够使用背景扣除来检测感兴趣的物体。我能够在单独的程序上实现 OpenCV Lucas Kanade 光流。但是,我陷入了如何将这两个程序合并到一个程序中的问题。frame1
保存视频中的实际帧,contours2
是从前景对象中选择的轮廓。
总而言之,如何将从背景减法方法获得的前景对象提供给calcOpticalFlowPyrLK
?或者,如果我的方法错误,请帮助我。先感谢您。
Mat mask = Mat::zeros(fore.rows, fore.cols, CV_8UC1);
drawContours(mask, contours2, -1, Scalar(255), 4, CV_FILLED);
if (first_frame)
{
goodFeaturesToTrack(mask, features_next, 1000, 0.01, 10, noArray(), 3, false, 0.04);
fm0 = mask.clone();
features_prev = features_next;
first_frame = false;
}
else
{
features_next.clear();
if (!features_prev.empty())
{
calcOpticalFlowPyrLK(fm0, mask, features_prev, features_next, featuresFound, err, winSize, 3, termcrit, 0, 0.001);
for (int i = 0; i < features_prev.size(); i++)
line(frame1, features_prev[i], features_next[i], CV_RGB(0, 0, …
Run Code Online (Sandbox Code Playgroud) 我试图从视频中删除背景并获得二进制图像(或8位),其中移动的对象的值是1,静态背景是0.
这样的事情:
起初我尝试了它与absDiff()
运行平均值 accumulateWeighted()
和当前帧的差异,但结果不是我预期的(只有边缘为1,移动对象内部为0).
所以我去了createBackgroundSubtractorMOG2
,createBackgroundSubtractorMOG
但这也不好(同样的问题).
有没有办法获得整个移动物体?
python opencv image-processing motion-detection background-subtraction