OpenCV实现双目图像裁剪

在进行双目标定的过程中,我们需要通过双目相机对棋盘格进行不同角度的拍照,然后还需要把拍摄的双目图像进行裁剪,双目相机拍摄的图像如下图所示,整个过程都是在ubuntu下的clion中完成,下面是自己写的一段代码,比较尴尬的是每次只能裁剪一张图,但是实现功能更重要,没有进一步去修改,代码如下:
在这里插入图片描述
具体C++代码:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(){

    Mat img = imread("/home/zixiangq/ZED/15.png",-1);  //这里需要修改成你自己图片所在的绝对路径
    /*
	第一个参数是图片的绝对地址
	第二个参数表示图片读入的方式(flags可以缺省,缺省时flags=1,表示以彩色图片方式读入图片)
	flags>0时表示以彩色方式读入图片
	flags=0时表示以灰度图方式读入图片
	flags<0时表示以图片的本来的格式读入图片
    */
    imshow("双目图像", img);    //“123”是显示框的名字
    int a = waitKey(10000);     //通过整型变量a获取waitKey函数的返回值
    cout << a << endl;
    /*
    waitKey(x)  表示等x毫秒,在这期间如果有按键按下,则返回按键的ascii码,等待结束则会返回-1.
    如果x=0,那么无限等待下去,直到有按键按下
    !!!另外,在imshow之后如果没有waitKey语句则不会正常显示图像。即imshow不会生效!!!
    */
    destroyAllWindows();   //销毁窗口
    Rect rect(1280,0,1280,720);   //创建一个Rect框,属于cv中的类,四个参数代表x,y,width,height 左上角是(x,y)=(0,0)
    Mat image_cut = Mat(img, rect);      //从img中按照rect进行切割,此时修改image_cut时image中对应部分也会修改,因此需要copy
    Mat image_copy = image_cut.clone();   //clone函数创建新的图片
    imshow("裁剪图像",image_copy);
    waitKey();
    imwrite( "/home/zixiangq/ZED/right15.png", image_copy);   //这里也要修改成你想保存的地址
    // 保存mat格式的图片成jpg格式,或者png,bmp格式,
    return 0;
}

执行程序:
1.显示双目图像,随便点击任何按键,出现你需要裁剪的图像在这里插入图片描述
2.显示你所裁剪的图像
在这里插入图片描述

3.再任意点击一个按键,保存裁剪的图像到你所设置的目标地址,然后程序退出。
这样就完成了一幅图像的裁剪,根据自己的情况可以对图像进行任何尺寸的修改,如果有能够进行所以图像的读取和裁剪的方式,希望可以在评论区进行补充,感谢。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值