使用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中是否有现成的功能?
答案 0 :(得分:2)
您可以使用的一种方法是使用蒙版复制图像:
inputMat.copyTo(outputMat, maskMat);
maskMat
是一个cv::Mat
,它具有相同的图像大小,但是是二进制的。 ROI应包含像素值1,其余值应为0.