学习OPENCV之读取图像和视频

读取图像的代码:

#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
    Mat img = imread("1.jpg");
    if(img.empty())
    {
        cout<<"error";
        return -1;
    }
    imshow("xx的靓照",img);
    waitKey();

    return 0;
}


读取视频:(opencv读取视频是没有声音的,只是提取图像)

http://yu2xiangyang.blog.163.com/blog/static/3731563820106814831778/

#include "highgui.h"

int main( int argc ,char ** argv){
 CvCapture * capture = cvCreateFileCapture ("2.avi");  //读取视频
    if(capture==NULL) {
  printf("NO capture");    //读取不成功,则标识
    return 1;
   };    
    double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS );   //读取视频的帧率
 int vfps = 1000 / fps;                                        //计算每帧播放的时间
    printf("%5.1f\t%5d\n",fps,vfps);                             
 double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
 printf("frames is %f\n",frames);
 cvNamedWindow("example",CV_WINDOW_AUTOSIZE);                  //定义窗口
 IplImage * frame;
 while(1){ 
  frame = cvQueryFrame( capture );                          //抓取帧
  float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO);     //读取该帧在视频中的相对位置
  printf("%f\n",ratio);
  if(!frame)break;
  cvShowImage("example",frame);                          //显示
  char c = cvWaitKey(vfps);
  if(c == 27 )break;
 }
 cvReleaseCapture(&capture);
 cvDestroyWindow("example");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用OpenCV实时读取图像,可以使用OpenCV中的VideoCapture类。下面是一个示例代码,可以将摄像头捕获的图像实时显示出来: ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { VideoCapture cap(0); // 0表示默认的摄像头设备 if (!cap.isOpened()) { std::cout << "Failed to open camera." << std::endl; return -1; } namedWindow("Camera", WINDOW_AUTOSIZE); while (true) { Mat frame; cap >> frame; // 从摄像头读取一帧图像 if (frame.empty()) { std::cout << "Failed to capture frame." << std::endl; break; } imshow("Camera", frame); // 显示图像 if (waitKey(30) == 'q') // 按下q键退出 { break; } } cap.release(); destroyAllWindows(); return 0; } ``` 这个示例代码中,我们使用VideoCapture类从摄像头中读取图像,并使用imshow函数实时显示图像。当按下q键时,程序退出。 ### 回答2: OpenCV是一个用于计算机视觉和图像处理的开源库。它可以帮助我们在编写图像处理程序时读取实时图像数据。 在使用OpenCV时,我们可以使用它提供的函数和类来读取实时图像。首先,我们需要创建一个VideoCapture对象,该对象用于从相机或视频文件中读取数据。我们可以通过参数来指定设备的索引或视频文件的路径。 一旦我们创建了VideoCapture对象,我们就可以使用它的read()函数来读取图像帧。这个函数返回一个布尔值,表示是否成功读取图像帧。如果成功读取图像帧,我们可以使用imshow()函数来显示图像。 为了实现即时读取图像,并且能够连续显示每一帧图像,我们可以使用一个while循环来不断读取和显示图像帧。在每个循环迭代中,我们可以使用waitKey()函数来等待用户按下键盘上的某个键,以便可以中断循环。 当我们想要停止读取并显示图像时,我们可以通过调用release()函数来释放VideoCapture对象。 总之,OpenCV提供了一些方便的函数和类,可以帮助我们实时读取图像。我们只需要创建一个VideoCapture对象,使用其read()函数来读取图像帧,并使用imshow()函数显示图像帧,就可以实现实时图像读取的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值