示例2-10 打开笔记本摄像头并显示(在源码上做了一些修改)(P32)
#include "pch.h"
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
int main() {
namedWindow("1", WINDOW_AUTOSIZE);
VideoCapture cap;
cap.open(0);/*跟前面打开视频文件一样,视频文件这里写的是文件地址,摄像头写的是摄像头编号
(如果只有一个摄像机连接,这个编号通常为0)*/
if (!cap.isOpened())//检验是否打开,没打开,则报错
{
std::cerr << "could not open capture." << std::endl;
return -1;
}
else
{
Mat frame;
while(1)
{
cap>> frame;
imshow("1", frame);
waitKey(30);
}
}
return 0;
}
代码中用到 return -1 和 return 0,便想提及一下该用法说明。
return语句用来结束循环,或返回一个函数的值。
1 return, 如果什么都不接的话,其实就是void类型函数的返回,返回后不再执行return后面的语句
如果函数执行成功返回0,不成功返回非0,一般情况下非0值常用-1来表示。
2 return 0:一般用在主函数结束时,表示程序正常终止,即告诉系统程序正常。
3 return -1::表示返回一个代数值,一般用在子函数结尾。表示程序异常终止,即告诉系统程序异常
4 return 1:与return -1相同。
---------------------
原文来源:https://blog.csdn.net/it_job/article/details/79132940
示例2-11 读取视频并将其转化为对数极坐标[1]视频显示并存储。
#include "pch.h"
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
int main() {
namedWindow("1", WINDOW_AUTOSIZE);
namedWindow("2", WINDOW_AUTOSIZE);
VideoCapture cap("F:/test.avi");
double fps = cap.get(CAP_PROP_FPS);
Size size((int)cap.get(CAP_PROP_FRAME_WIDTH), (int)cap.get(CAP_PROP_FRAME_HEIGHT));
VideoWriter writer;
writer.open("F:/new.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size);//参数说明(路径名称,编码方式(下面有详细说明[2]),帧率,大小)
cv::Mat logpolar_frame, rgb_frame;
for (;;) {
cap >> rgb_frame;
if (rgb_frame.empty()) break;
imshow("1", rgb_frame);
/*对数极坐标变换,参数说明(原图,新图,变换中心(这个在跟踪里要求很高),比例因子(设置原则是便于最感兴趣的特征能够存在于图像的大部分区域),参数插入方式)*/
logPolar(rgb_frame, logpolar_frame, Point2f(rgb_frame.cols*0.5f, rgb_frame.rows*0.5f), 30, INTER_LINEAR | WARP_FILL_OUTLIERS);
imshow("2", logpolar_frame);
writer << logpolar_frame;//写入文件
char c = waitKey(10);
if (c == 27) break;
}
cap.release();
}
[1]对数极坐标
对数极坐标变换的灵感来源于人类视觉系统。图像旋转和尺度变化可以转化为对数极坐标中的平移和上下移动。可以应用在图像配准识别定位跟踪领域。注意,这种变化对图像的中心点要求严格。
相关链接
https://blog.csdn.net/carson2005/article/details/7185552 https://blog.csdn.net/zcg1942/article/details/80886999 https://blog.csdn.net/zcg1942/article/details/80936038 http://www.docin.com/p-860354163.html(基于对数极坐标变换的图像匹配算法论文)
[2]编码方式
VideoWriter的第二个参数是视频编码方式,指明视频将以何种方式进行压缩。现在有非常多的编码器可以选择(完整版见下面的链接),但是选择的任何编码器必须确保可以在你的机器上使用。
https://blog.csdn.net/jellyli2091/article/details/62219678
网友评论