翻转图像以获得镜像效果

ran*_*ger 14 c++ opencv image-processing

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

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

imshow("flipped",dst);
Run Code Online (Sandbox Code Playgroud)

ber*_*rak 15

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)
Run Code Online (Sandbox Code Playgroud)


jua*_*nza 7

使用cv::flip并传递1flipcode.

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

cv::Mat dst;
cv::flip(src, dst, 1);
imshow("flipped",dst);
Run Code Online (Sandbox Code Playgroud)


小智 5

关键是创建与dst完全一样的src

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

imshow("flipped", dst);
Run Code Online (Sandbox Code Playgroud)

  • 不需要设置dst = cv :: Mat(src.rows,src.cols,CV_8UC3);翻转功能会自动处理该问题。 (2认同)