旋转图像时如何填充边框?

时间:2011-11-16 20:09:08

标签: c++ image-processing opencv

我正在使用以下代码在opencv中旋转图像。但是,之后角落的颜色为黑色。我想当我将borderMode设置为BORDER_CONSTANT时,我可以指定颜色。但无论我设置什么颜色(最后一个参数),结果总是黑色。

cv::Mat rotated; 
float rotation = 3.0f; 
cv::warpAffine(img, 
              rotated, 
              rotation, 
              img.size(),  
              cv::INTER_CUBIC, 
              cv::BORDER_CONSTANT, 
              cv::Scalar(1.0, 1.0, 1.0, 0.0));
cv::imshow("rotated", rotated); 

有人可以解释一下,我在这里做错了什么?

我知道我之后可以使用cv::floodFill,但不知何故应该可以只使用warpAffine

1 个答案:

答案 0 :(得分:5)

您是否尝试过大于1的值?怀特应该是

Scalar(255,255,255);

蓝:

Scalar(255,0,0);

等等。

OpenCV矩阵中的值表示为uchars(0..255),而不是(0.0..1.0)