1、OpenCV的简单操作

1、打开一张图片并显示

    cv::Mat img = cv::imread("D:/img/3333.jpg",-1);//读取一张图片
    if(img.empty())return -1;
    cv::namedWindow("aa", cv::WINDOW_AUTOSIZE);//在屏幕上打开一个窗口,窗口名aa
    cv::imshow("aa",img);//(没创建窗口,会自动调用函数创建),窗口被重绘上要求的图片
    cv::waitKey(0);//系统暂停并且等待键盘事件
    cv::destroyyWindow("aa");//关闭窗口并释放掉相关联内存空间

2、打开并播放一条视频

    cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
    cv::VideoCapture cap; //此结构支持很多类型的ffmpeg视频文件
    cap.open("D:/img/3333.mp4");//打开视频文件
    cv::Mat frame;
    for(;;){
        cap >> frame;//读取一帧
        if(frame.empty()) break;
        cv::imshow("aa",frame);
        if(cv::waitKey(33) >= 0) break;//等待33毫秒,有键盘事件将退出循环
    }

3、高斯模糊以及降采样

    cv::Mat img1, img2;
    cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
    img1 = cv::imread("D:/img/3333.jpg",-1);
    cv::pyrDown(img1,img2);//其宽高为原始图像的一半
    cv::imshow("aa",img2);
    cv::waitKey(0);

4、图像简单处理

    cv::Mat img_rgb, img_gry, img_cny;
    cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
    img_rgb = cv::imread("D:/img/3333.jpg",-1);
    cv::cvtColor(img_rgb, img_gry, cv::COLOR_BGR2GRAY);//BGR图像转换为灰度图
    cv::Canny(img_gry, img_cny, 10, 100, 3, true);//边缘检测器,检测图像内容物边缘
    cv::imshow("aa",img_cny);
    cv::waitKey(0);

5、图像像素点读取

    cv::Mat img_rgb = cv::imread("D:/img/3333.jpg",-1);
    int x = 16,y = 32;
    cv::Vec3b intensity = img_rgb.at<cv::Vec3b>(y,x);
    uchar blue = intensity[0];
    uchar green = intensity[1];
    uchar red = intensity[2];
    cout << (unsigned int)red << " " << (unsigned int)blue << " " << (unsigned int)green << endl;

6、从视频流捕获帧的对象,并创建一个雪茹对象以便将帧输入到一个视频文件中

    cv::namedWindow("aa",cv::WINDOW_AUTOSIZE);
    cv::VideoCapture capture("D:/img/112233.mp4"); 
    double fps = capture.get(cv::CAP_PROP_FPS);//获取帧数
    cv::Size size(//图像的规格宽和高
                (int)capture.get(cv::CAP_PROP_FRAME_WIDTH),
                (int)capture.get(cv::CAP_PROP_FRAME_HEIGHT)
                );
    cv::VideoWriter writer;//创建一个视频写入对象
    writer.open("D:/img/5555.mp4", cv::VideoWriter::fourcc('D','I','V','X'),fps,size);//图像编码(解码器),avi对应('M','J','P','G)
    cv::Mat logpolar_frame, bgr_frame;
    for(;;){
        capture >> bgr_frame;
        if(bgr_frame.empty()) break;
        cv::logPolar(//转换为对数极坐标图像
                    bgr_frame,
                    logpolar_frame,
                    cv::Point2f(
                        bgr_frame.cols/2,
                        bgr_frame.rows/2
                        ),
                    40,
                    cv::WARP_FILL_OUTLIERS
                    );
        cv::imshow("aa",logpolar_frame);
        writer << logpolar_frame;
        char c = cv::waitKey(10);
        if(c == 27) break;
    }
    capture.release();//关闭视频捕获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值