2015-12-11 157 views
1

如何將給定大小的圖像邊框設置爲黑色,不帶填充,即,我只是想將圖像邊框設置爲黑色(零),並且輸出將是與來源相同的圖像。OpenCV:設置圖像邊框,無填充

+1

我會開始試圖做這件事之前問這樣做。 – ScarletAmaranth

+0

在評判@ScarletAmaranth之前,你應該分享你到目前爲止所嘗試的。 – guneykayim

回答

5

您可以簡單地畫在圖像上一個黑色的矩形:

cv::Mat image; 
cv::Rect border(cv::Point(0, 0), image.size()); 
cv::Scalar color(0, 0, 0); 
int thickness = 1; 

cv::rectangle(image, border, color, thickness); 
+0

如果邊框顏色是白色或黑色,它是否應該更改文件圖像大小,以Kb爲單位?恐怕這可能會改變我的圖像質量,因爲尺寸非常小。 – Sigur

2

您可以使用copyMakeBorder與BORDER_ISOLATED標誌。

cv::Mat image = cv::imread("lena.png"); 
cv::Mat output; 

const int border = 10; 
const int borderType = cv::BORDER_CONSTANT | cv::BORDER_ISOLATED; 
const cv::Scalar value(0, 0, 0); 
const cv::Rect roi(border, border, image.cols-2*border, image.rows-2*border); 
cv::copyMakeBorder(image(roi), output, border, border, border, border, borderType, value); 

cv::imshow("input", image); 
cv::imshow("output", output); 
cv::waitKey(0);