【问题标题】:Flipping an image to get mirror effect翻转图像以获得镜像效果
【发布时间】:2013-02-17 10:44:37
【问题描述】:

我正在处理一个需要翻转帧的视频处理项目。我尝试使用 cvFlip 但似乎没有沿 y 轴翻转(x 轴工作......)并导致分段错误。还有其他选择吗??

cv::Mat dst=src;      //src= source image from cam
cv::flip(dst, dst, 1);     //segmentation fault shown

imshow("flipped",dst);

【问题讨论】:

  • 请发布相关代码,以便人们帮助您修复它。
  • 这与 Qt 有什么关系?
  • @Stephen Chu 一点也不
  • 我提到它是因为我在 Qt creator IDe 中使用 qt 和 opencv

标签: c++ opencv image-processing


【解决方案1】:
cv::Mat src=imload("bla.png");
cv::Mat dst;               // dst must be a different Mat
cv::flip(src, dst, 1);     // because you can't flip in-place (leads to segfault)

【讨论】:

    【解决方案2】:

    使用cv::flip 并将1 传递为flipcode

    使用示例代码查看您的编辑,您无法原地翻转。你需要一个单独的目的地cv::Mat

    cv::Mat dst;
    cv::flip(src, dst, 1);
    imshow("flipped",dst);
    

    【讨论】:

    • 我也尝试了单独的目的地,但仍然显示分段错误!
    • @ranger 实际上,文档似乎暗示必须预先分配目标数组,例如通过执行 dst.create(src.size(),src.type()); 。我无法验证这是否是绝对必要的。
    【解决方案3】:

    关键是要像src一样创建dst

    cv::Mat dst = cv::Mat(src.rows, src.cols, CV_8UC3);
    cv::flip(src, dst, 1);
    
    imshow("flipped", dst);
    

    【讨论】:

    • 不需要设置dst = cv::Mat(src.rows, src.cols, CV_8UC3);翻页功能自动处理。
    猜你喜欢
    • 2020-01-22
    • 2012-01-14
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多