2011-11-16 54 views
4

我使用下面的代码在opencv中旋转图像。然而,之后,角落被染成黑色。我想当我设置borderModeBORDER_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

+0

是为'Scalar'的α值的第四参数?如果是这样,它应该是1.0或255,而不是0.0。 –

回答

5

你尝试了一些大于1的值吗?白应

Scalar(255,255,255); 

蓝:

Scalar(255,0,0); 

等。

值在OpenCV中矩阵被表达为uchars(0..255),而不是(0.0..1.0)