写过一点C++
2019-04-03 15:01
采纳率: 75%
浏览 2.5k

OpenCV中通过高斯混合模型对背景进行建模,得到的前景图像只能是二值图像吗?

videoPath = 'E:\\BaiduNetdiskDownload\\gasoline\\demo\\1\\1.mp4'
capture = cv2.VideoCapture(videoPath)
mog = cv2.createBackgroundSubtractorMOG2()
while(1):
    ret, frame = capture.read()     #frame是摄像头的每一帧图像
    print(frame.shape)
    fgmask = mog.apply(frame)   #得到二值图像
    print(fgmask.shape)

通过高斯混合模型进行背景建模,得到的前景图像只能是二值图像吗?上述代码中frame.shape是(1080,1920,3),而fgmask.shape是(1080,1920),如果想要得到**彩色RGB前景图像**,直接使用cv2.cvtColor函数操作是不能恢复的吧,应该怎么进行正确的格式转化?还请问,OpenCV中没有集成的RGB转HSI的函数吗?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 泡视界 2019-04-04 17:43
    已采纳

    朋友,第一个问题:
    我用过这个函数。BackgroundSubtractorMOG2这个函数是高斯背景差分函数。输出是黑白的二值图片。
    第二个问题如何得到彩色的北京分图片:
    仅提供思路,代码要码很多。
    二值化后的图片前景为白色,值为255,二进制位11111111,背景位黑色,值为0,二进制为00000000。这是所有值都是unsinged的情况。
    你可以将你的RGB原图转化为YUV(OpenCV应该有函数可以实现),然后用Y值和fgmask做鱼操作(与或非的与)。如此亮度信号就只保留了mask内部的值,也就是你的前景信号。如此即可得到你要的彩色前景图像。
    第三个问题:
    不清楚HSI是什么,没办法解答

    打赏 评论

相关推荐 更多相似问题