翻转图像以获得镜像效果

Posted

技术标签:

【中文标题】翻转图像以获得镜像效果【英文标题】: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 【参考方案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);翻页功能自动处理。

以上是关于翻转图像以获得镜像效果的主要内容,如果未能解决你的问题,请参考以下文章

利用OpenCV的flip()函数实现图像的水平镜像(水平翻转)垂直镜像(垂直翻转)

图像镜像翻转

Androidandroid镜像翻转

OpenCV图像旋转90度函数cv2.transpose导致镜像翻转

ARKit 镜像/翻转相机层

你可以使用 CSS 来镜像/翻转文本吗?