ZBLOG

#include int main(int argc, char* argv[]) { cv::Mat src = cv::Mat(768, 1024, CV_8UC1, cv::Scalar::all(128)); cv::circle(src, cv::Point(300, 300), 200, cv::Scalar::all(78), -1); cv::rectangle(src, cv::Rect(300, 4...

根据提供的代码,以下是修复潜在问题并优化的版本:

#include <opencv2/opencv.hpp>

int main(int argc, char* argv[])
{
    cv::Mat src = cv::Mat(768, 1024, CV_8UC1, cv::Scalar::all(128));

    cv::circle(src, cv::Point(300, 300), 200, cv::Scalar::all(78), -1);
    cv::rectangle(src, cv::Rect(300, 400, 73, 87), cv::Scalar::all(197), -1);
    cv::rectangle(src, cv::Rect(410, 100, 387, 173), cv::Scalar::all(154), -1);
    cv::line(src, cv::Point(560, 612), cv::Point(760, 415), cv::Scalar::all(96), 3);
    //cv :: line(src,cv :: Point(1124、484),cv :: Point(512、968),cv :: Scalar :: all(56),400);
     // 上述行中点坐标超出图像范围,请注释掉该行

    // 显示原始图像
    cv: : imshow("SourceImage",src) ;
     / * 这里可能需要加上一个延迟来显示图像。
       在Windows下,可以使用:
       int key = cv :: waitKey(0); 或者
       while(true)
      {
          if(cv ::waitKey(1)==27)
             break;
      }
        确保窗口不会立即关闭。*/

    std: : vector<std::vector<cv ::Point>> contour;
    cv :: findContours(src.clone(),contour,cv ::RETR_EXTERNAL,cv ::CHAIN_APPROX_SIMPLE);

    if(!contour.empty())
    {
        cv :: Mat dst;
        cv::cvtColor(src, dst, CV_GRAY2BGR); // 将灰度图转换为彩色图像

        for(const auto & pts : contour)
            for(const auto & pt : pts)
                dst.at<cv::Vec3b>(pt) = cv::Vec3b(0, 0, 255);

        // 显示结果图像
        cv: : imshow("Result",dst);
       /* 这里也可能需要加上一个延迟来显示图像。
          在Windows下同样可以使用:
          int key = cv::waitKey(0); 或者
          while(true)
          {
              if(cv::waitKey(1)==27)
                 break;
          }
          确保窗口不会立即关闭。*/
    }
    else
    {
        std::cout << "未成功提取到轮廓点!" << std::endl;
    }

    return 0;
}

修复的问题:

  1. 注释掉了超出图像范围的一行代码cv::line(src, cv::Point(1124, 484), cv::Point(512, 968), cv::Scalar::all(56), 400);
  2. 添加了注释部分来确保显示的窗口不会立即关闭。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?