从opencv的视频关注和标量拍摄的图像之间的整数划分

Integer division between an Image taken from a VideoCapture of OpenCV and a scalar

本文关键字:图像 之间 划分 整数 标量 的视频 opencv      更新时间:2023-10-16

我正在使用版本opencv 3.2。

我打开默认摄像机:

VideoCapture cap;
cap.open(0);

并抓住当前帧:

Mat frame;
cap.read(frame);

现在,我想减少图像中显示的颜色数量。因此,我执行整数dise ,然后将图像乘以相同的标量值,例如10。C 操作员的过载很容易完成。

Mat processedFrame = (frame / 10) * 10

但是,frame值以浮动格式为单位。然后,该划分不会作为整数划分进行,并且无法实现颜色的还原。

我想可以通过在进行整数部门之前将frame的铸件铸造到整数值来修复。我该如何考虑一下相机可以以1(灰度)或3(bgr)颜色通道抓住图像?

OPENCV也为乘法提供了API。您可以使用该API获得所需的结果,而不是使用重载运算符为:

// Assuming the image to be RGB 
cv::divide(frame, cv::Scalar(10, 10, 10), frame, 1, CV_8UC3);
cv::multiply(frame, cv::Scalar(10, 10, 10), frame, 1, CV_8UC3);