首页 > 解决方案 > 使用 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); 
}

这是我的源图像:

在此处输入图像描述

这就是我得到的:

在此处输入图像描述

标签: c++opencv

解决方案


似乎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());      

所以我需要在调整大小后将图像转换为灰度。


推荐阅读