1.显示两张不同分辨率图片
#include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #include <iostream> using namespace cv; using namespace std; void main() { string path1 = "D:/opencv_cpp_course_resources/resources/test.png"; Mat img1 = imread(path1); string path2 = "D:/opencv_cpp_course_resources/resources/lambo.png"; Mat img2 = imread(path2); cout << img1.size << endl; cout << img2.size << endl; imshow("img1", img1); imshow("img2", img2); waitKey(0); }
2.测试电脑摄像头分辨率和帧率
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv)
{
Mat frame;
VideoCapture capture(0);
double fps;
char string[10];
namedWindow("Camera FPS");
double t = 0;
while (true)
{
t = (double)getTickCount();
if (waitKey(1) == 27) { break; }
if (capture.isOpened())
{
capture >> frame;
t = ((double)getTickCount() - t) / cv::getTickFrequency();
fps = 1.0 / t;
sprintf_s(string, "%.2f", fps);
std::string fpsString("FPS:");
fpsString += string;
printf("fps: %.2f width:%d height:%d fps:%.2f\n", fps, frame.cols, frame.rows, capture.get(cv::CAP_PROP_FPS));
putText(frame, fpsString,Point(5, 20),FONT_HERSHEY_SIMPLEX,0.5,Scalar(0, 0, 0));
imshow("Camera FPS", frame);
}
else
{
cout << "No Camera Input!" << endl;
break;
}
}
}
思考题
1.Opencv库与Matlab、halcon的区别?
- HALCON可以用C,C++,C#,Visual basic和Delphi等语言访问,OpenCV提供了Python、Ruby、MATLAB等语言的接口。
- OpenCV侧重计算机视觉领域,HALCON侧重机器视觉领域。
- HALCON是商业软件,而OpenCV可以在商业和研究领域中免费使用。
- 虽然MATLAB也带有很多函数库,但不同于HALCON和OpenCV,MATLAB是个完整的集成开发环境,包括了编辑器、函数库、还有Matlab语言本身均由MathWorks公司提供。例如,用MATLAB你可以debug,但是对于OpenCV相关的代码调试,你就需要Visual Studio了。
2.在显示完之后,用不用destroyWindow()有什么区别?
destroyWindow()用于关闭特定的窗口,括号内填写窗口的名字,类型为string
3.png图片格式和jpg图片格式有什么区别?
1、png是无损压缩,png即可移植网络图形格式,也是一种位图文件存储格式,可以进行无损压缩。而jpg是最常见的图片格式了,jpg是有损;
2、而png格式可编辑,如图片中有字体等要素只需要导入到PS内,就可以PS再做更改,但由于,jpg格式已经经过了压缩和合并,因此jpg格式不可编辑;
3、对于两种格式的解析度,png高于jpg。