使用OpenCV 3.2
需要用黑色填充图像的两侧。
我为每一方创建了rect对象。并简单地在图片上绘制它。但解决方案似乎很麻烦。
// Border 100 px
cv::Rect top_rect(0, 0, img.size().width, 100)
...
cv::rectangle(img, top_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, bot_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, left_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, right_rect, cv::Scalar(0, 0, 0), CV_FILLED);
我发现解决方案如:
Rect roi(100, 100, 600, 400);
Mat result_img = img(roi);
但是这个解决方案会改变图像的大小。 copyMakeBorder
- 也调整大小。我需要:在矩形外面取一个区域并用黑色填充它。图像尺寸应保持不变。
OpenCV中是否有现成的功能?
您可以使用的一种方法是使用蒙版复制图像:
inputMat.copyTo(outputMat, maskMat);
maskMat
是一个cv::Mat
,具有相同的图像大小,但是二进制。 ROI应包含像素值1,其余值应为0。