我需要获取高斯与opencv混合的背景模型。我知道在C
中有一种名为getBackgroundImage的方法,我搜索是否有可能在python接口中获取它,但是我没有得到很好的结果。我尝试使用opencv
3.0.0-dev,因为它具有BackgroundSubtractorMOG2实现,但是help()函数没有记录背景模型的方法实现。您知道是否有未记录的实现吗?我搜索了如何编辑opencv源以实现python实现,但是我还没有找到有关它的文档。我宁愿避免使用scipy.weave来编译C
代码,而且我不知道scipy.weave在这种情况下是否有用
调整了 Zaw Lin 的解决方案
apt install libopencv-dev
主要区别在于结果(fg
/ bg
)图像是在python中创建/分配的,然后传递给c ++库。Zaw Lin的解决方案给我错误(errno
139-SIG_SEGV),因为该应用程序正在访问无效的内存区域。希望它可以节省一个人几个小时:)
mog2.cpp:
#include <opencv2/opencv.hpp>
cv::BackgroundSubtractorMOG2 *mog = cv::createBackgroundSubtractorMOG2 (500, 16, false);
extern "C" void getfg(int rows, int cols, unsigned char* imgData,
unsigned char *fgD) {
cv::Mat img(rows, cols, CV_8UC3, (void *) imgData);
cv::Mat fg(rows, cols, CV_8UC1, fgD);
mog->apply(img, fg);
}
extern "C" void getbg(int rows, int cols, unsigned char *bgD) {
cv::Mat bg = cv::Mat(rows, cols, CV_8UC3, bgD);
mog->getBackgroundImage(bg);
}
像这样编译:
gcc \
-shared \
-o libmog2.so \
-fPIC ./mog2.cpp \
-lopencv_core -lopencv_highgui -lopencv_objdetect -lopencv_imgproc -lopencv_features2d -lopencv_ml -lopencv_calib3d -lopencv_video
然后是python:
mog2.py
import numpy as np
import ctypes as C
import cv2
libmog = C.cdll.LoadLibrary('path/to/libmog2.so')
def getfg(img):
(rows, cols) = (img.shape[0], img.shape[1])
res = np.zeros(dtype=np.uint8, shape=(rows, cols))
libmog.getfg(img.shape[0], img.shape[1],
img.ctypes.data_as(C.POINTER(C.c_ubyte)),
res.ctypes.data_as(C.POINTER(C.c_ubyte)))
return res
def getbg(img):
(rows, cols) = (img.shape[0], img.shape[1])
res = np.zeros(dtype=np.uint8, shape=(rows, cols, 3))
libmog.getbg(rows, cols, res.ctypes.data_as(C.POINTER(C.c_ubyte)))
return res
if __name__ == '__main__':
c = cv2.VideoCapture(0)
while 1:
_, f = c.read()
cv2.imshow('f', f)
cv2.imshow('fg', getfg(f))
cv2.imshow('bg', getbg(f))
if cv2.waitKey(1) == 27:
exit(0)
问题内容: 问题很简单。如何在jQuery中获取div的背景图像大小(宽度和高度)。可能吗 我认为这可以工作: 我收到的错误消息是这不是一个函数。 问题答案: 您将必须执行以下操作: 由于代码的简单性,您不能在背景图片的URL中使用括号或引号。但是,可以扩展代码以获得更多支持。我只是想传达一般想法。
我不知道为什么这个代码不能工作!为什么显示警报空白? 当点击div时,div的背景颜色应该写在输入框中,并且也显示在警报中。
问题内容: 我希望网站上的弹出窗口具有 Vista/7航空玻璃风格的效果,并且它必须是动态的。我很好这不是一个跨浏览器的效果,只要该网站仍然 _适用_于所有现代浏览器。 我的第一次尝试是使用类似 但是,正如我应该预期的那样, 这导致 对话框的 内容 模糊并且背景保持清晰。 有什么方法可以使用CSS来模糊半透明元素的背景而不是其内容? 问题答案: 由于除FF以外,其他浏览器似乎未广泛支持该属性,因此
问题内容: 如何获取Java中Activity的背景颜色和文本颜色(子视图的默认颜色)? 问题答案:
问题内容: 如何使用JavaScript 获取任何元素(例如)的背景颜色?我努力了: 问题答案: 与所有包含连字符的css属性一样,它们在JS中的对应名称是删除连字符并使用以下字母大写:
我试图建立一个相当粗糙的工具,将ppt/pptx文件转换为超文本标记语言格式。 我发现,不幸的是,apache poi没有为处理Power point文件提供统一的编程模型,必须编写代码来解析每种格式。 我觉得pptx文件支持比ppt支持有限得多。我面临的一个问题是获取有关pptx幻灯片背景(颜色、图案、背景图像)的信息。 我发现XSLFbackground(pptx api)类比其相应的背景类(
我想让我的登录活动与背景关闭整个活动,包括手机本身的时钟像这样 这是我的密码 但我的输出是 我需要删除橙色条,使其与第一个图像相同。 我如何按照这种风格制作:
问题内容: 嗨,我正在尝试使背景图像模糊,但我认为这样做不够。对此的任何帮助都会增强我的精力。谢谢 这是我的CSS 我正在尝试应用此功能,但它只会模糊我所有插入背景图像的网页。 谢谢。 问题答案: 如果您要应用模糊处理,那么它将模糊您的网页。 而不是要添加背景,您需要创建另一个与同尺寸该网页,并添加模糊处理它。 例