ZBLOG

C++ 使用opencv将192*112图像用线插方式放大到1920*1080后再做膨胀腐蚀

在C++中使用OpenCV将192x112的图像插值放大到1920x1080,并进行膨胀和腐蚀操作,可以按照以下步骤进行:

  1. 读取图像
  2. 插值放大(例如使用cv::resize函数)
  3. 进行膨胀和腐蚀操作(使用cv::dilatecv::erode函数)

下面是一个简单的代码示例,演示了如何实现这个过程:

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 读取原始图像
    cv::Mat originalImage = cv::imread("path_to_your_image.jpg"); // 替换为你的图像路径
    if (originalImage.empty()) {
        std::cerr << "Error: Unable to open the image!" << std::endl;
        return -1;
    }

    // 检查图像尺寸是否为192x112
    if (originalImage.size() != cv::Size(192, 112)) {
        std::cerr << "Error: The image size is not 192x112!" << std::endl;
        return -1;
    }

    // 使用线性插值将图像放大到1920x1080
    cv::Mat resizedImage;
    cv::resize(originalImage, resizedImage, cv::Size(1920, 1080), 0, 0, cv::INTER_LINEAR);

    // 定义结构元素
    int erosion_size = 1; // 腐蚀的核大小
    int dilation_size = 3; // 膨胀的核大小

    cv::Mat elementErosion = cv::getStructuringElement(cv::MORPH_RECT,
                                                        cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1),
                                                        cv::Point(erosion_size, erosion_size));

    cv::Mat elementDilation = cv::getStructuringElement(cv::MORPH_RECT,
                                                         cv::Size(2 * dilation_size + 1, 2 * dilation_size + 1),
                                                         cv::Point(dilation_size, dilation_size));

    // 膨胀操作
    cv::Mat dilatedImage;
    cv::dilate(resizedImage, dilatedImage, elementDilation);

    // 腐蚀操作
    cv::Mat erodedImage;
    cv::erode(dilatedImage, erodedImage, elementErosion);

    // 显示结果
    cv::imshow("Original Image", originalImage);
    cv::imshow("Resized Image", resizedImage);
    cv::imshow("Dilated Image", dilatedImage);
    cv::imshow("Eroded Image", erodedImage);

   / / 等待用户按键并退出程序
   / / 注意:当你在一个不支持GUI的环境下运行时,这一步可能会出错。 
   
   /* 
   在没有显示窗口支持的环境下,你可以保存输出图片。
   */
    
     /*cv.imwrite("resized_image.jpg", resized_image);  
      imwrite('dilated_image.jpg', dilated_image);
      imwrite('eroded_image.jpg', eroded_image);*/

     
      
    
      
    

  
   

  




  
   
    
    
  
    

   char c = (char)cvWaitKey();
   
   
   

 
   

   
  


  
    
     

     return 0;

}

程序说明:

  • 包含头文件: 引入OpenCV所需的头文件。
  • 读取原始图像: 用cv.imread()读取指定路径的图像,并检查其是否成功加载。
  • 尺寸检查: 确保输入图像是192x112大小。
  • 插值放大: 使用cv.resize()函数以线性方式将图像放大到1920x1080。
  • 形态学操作:
    • 创建膨胀和腐蚀所需的结构元素。
    • 使用cv.dilate()执行膨胀,随后用cv.erode()执行腐蚀。

请确保在你的系统上正确安装了OpenCV库,并根据需要调整代码中的图像路径。如果要在没有GUI支持的环境中运行该程序,注释掉窗口显示相关部分,改为保存结果到文件中。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21491

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?