c++ - 使用 OpenCV 调整图像大小时遇到问题
问题描述
我想将图像调整为特定大小,它会调整大小但也会被裁剪。我究竟做错了什么?
我的代码:
cv::Mat Processor::process_image(cv::Mat& message)
{
float scale_down = 0.5;
cv::Mat resized_message;
cv::resize(message, resized_message, cv::Size(), scale_down, scale_down);
return resized_message;
}
int main()
{
cv::namedWindow("view", cv::WINDOW_AUTOSIZE);
...
resized_image = process_image(image);
cv::imshow("view", resized_image);
cv::waitKey(30);
}
这是我的源图像:
这就是我得到的:
解决方案
似乎mono8
在我的发布功能中产生了错误。
img_publisher.publish(cv_bridge::CvImage(std_msgs::Header(), "mono8", message_to_publish.get_image()).toImageMsg());
因为如果我发布图像,因为bgr8
它工作正常。
img_publisher.publish(cv_bridge::CvImage(std_msgs::Header(), "bgr8", message_to_publish.get_image()).toImageMsg());
所以我需要在调整大小后将图像转换为灰度。
推荐阅读
- javascript - 自动滑块动画不起作用
- java - 从返回 CompletableFuture 的异步方法的同步部分抛出异常
- reactjs - 没有在 componentDidMount 中调用 Curried 函数
- spring-boot - 春季数据JPA搜索忽略单词顺序
- gmail-api - 如何使用 Gmail API 从委托帐户发送电子邮件
- sql - 在循环 SQL 查询中捕获多个错误
- c# - WebJobs 中的 IConfiguration
- python - PyList_New 的链接器错误
- css - MiniCssExtractPlugin 相对于 ExtractTextPlugin 的优势?
- docker - 我可以同时运行 Kubernetes 和 Swarm 吗?