opencv中的镜像
Posted
技术标签:
【中文标题】opencv中的镜像【英文标题】:Mirror image in opencv 【发布时间】:2013-02-16 07:16:34 【问题描述】:我需要翻转(镜像)从网络摄像头接收到的帧,我遵循如下代码:
cv::flip(gray,gray,1);
imshow("flipped",gray);
灰色为 cv::Mat 格式,翻转为 cvNamedWindow。我在 qt creator IDE 中遇到分段错误。我怀疑灰色的维度可能是分段错误的原因。 gray 是从凸轮接收到的实际图像转换的灰度图像。如何清除错误?有人有更好的主意吗??
【问题讨论】:
你得到相同的段。错误,如果您尝试使用临时数组? IE。cv::flip(gray, tmp, 1); imshow("flipped", tmp);
【参考方案1】:
分段错误的一个原因是您可能没有对网络摄像头传递给 OpenCV 的“坏”帧实施检查。您需要检查帧是否为 NULL,然后在流上使用翻转/其他操作。
【讨论】:
不,我确实检查过...问题仍然存在,但是当我将翻转模式更改为 0 时,它的工作(翻转 x 轴)但我需要沿 先翻转再转置【参考方案2】:我认为 MingW 是判决。据报道,我使用的版本有一些像这样的错误。 因此,为了获得镜像,我使用翻转代码 0 翻转了 src 图像,然后将其旋转 180 度以沿 y 轴翻转它。
cv::Mat dst;
cv::flip(src,dst,0);
Point2f src_center(dst.cols/2.0F, dst.rows/2.0F);
cv::Mat rot_matrix = getRotationMatrix2D(src_center, 180.0, 1.0);
cv::Mat rotated_img(Size(dst.size().height, dst.size().width), dst.type());
warpAffine(dst, rotated_img, rot_matrix, dst.size());
imshow("flipped",rotated_img);
【讨论】:
以上是关于opencv中的镜像的主要内容,如果未能解决你的问题,请参考以下文章
详解OpenCV的坐标重映射函数remap()的两种使用方法并附使用它得到图像的水平镜像和垂直镜像的示例代码
利用OpenCV的flip()函数实现图像的水平镜像(水平翻转)垂直镜像(垂直翻转)
opencv-3.4.2-android-sdk.zip国内下载镜像