我正在尝试使用旋转图像
void rotate(cv::Mat& src, double angle, cv::Mat& dst) { int len = std::max(src.cols, src.rows); cv::Point2f pt(len / 2., len / 2.); cv::Mat r = cv::getRotationMatrix2D(pt, angle, 1.0); cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows)); }
通过给出角度,源和目标图像.旋转工作正常如下.
我想让黑色区域变白.我试过了
cv::Mat dst = cv::Mat::ones(src.cols, src.rows, src.type());
在调用rotate之前,但结果没有变化.我怎样才能做到这一点?
注意:我正在寻找在进行旋转时实现此目的的解决方案.显然,通过在旋转后使黑色区域变白可以实现.
您将需要使用函数的borderMode
和borderValue
参数warpAffine
来实现此目的.通过将模式设置为BORDER_CONSTANT
它将对边框像素(即图像外部)使用常量值,并且可以将值设置为要使用的常量值(即白色).它看起来像:
cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows), cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(255, 255, 255));
有关更多详细信息,请参阅OpenCV API文档.