翻转图像以获得镜像效果
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()函数实现图像的水平镜像(水平翻转)垂直镜像(垂直翻转)