Open CV C++显示图像
cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;//包含cv命名空间
int main() {
//imread(path):从给定路径读取一张图片,储存为Mat变量对象
Mat img = imread("images/love.jpg");
//namedWindow(window):定义一个显示窗口并指定窗口名
namedWindow("love");
//imshow(window,img),在指定窗口显示指定图像
imshow("love", img);
//waitKey(millisecond),等待按键输入后退出,指定时间(ms)后自动关闭窗口,second=0表示无限等待
waitKey(0);
//关闭所有窗口,释放资源
destroyAllWindows();
return 0;
}
Open CV C++显示视频
cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;//包含cv命名空间
int main() {
//显示视频
//创建视频捕获对象
VideoCapture cap;
//选择视频源
//1.使用摄像头(默认摄像头,设备索引0)
cap.open(0);
//2.使用视频文件
cap.open("videos/example1.mp4");
//检查是否成功打开视频源
if (!cap.isOpened()) {
cerr << "Error: Could not open video source!" << endl;
return -1;
}
//创建窗口(按照图像实际尺寸显示)
namedWindow("Video Player", WINDOW_AUTOSIZE);
// 视频帧率信息(可选),实际帧率 = min(视频源帧率, 1000/delay, 处理能力上限)
double fps = cap.get(CAP_PROP_FPS);
cout << "Frame rate: " << fps << " FPS" << endl;
//主循环:逐帧读取和显示
while (true) {
Mat frame;
//从视频源读取一帧
cap >> frame;
//检查是否读取到有效帧
if (frame.empty()) {
cerr << "End of video stream" << endl;
break;
}
//显示当前帧
imshow("Video Player", frame);
//检查按键输入(按ESC键退出)
char key = waitKey(25); //25ms延迟=40 FPS
if (key == 27) { // ASCII码27=ESC键
cout << "Exit by user request" << endl;
break;
}
}
// 释放资源
cap.release();
destroyAllWindows();
return 0;
}
Open CV Python显示图像
python
import cv2
import numpy as np
#显示图像
def show_image(img_path):
#读取图像->np.ndarray
img=cv2.imread(img_path)
#定义命名一个图像显示窗口
cv2.namedWindow("Cute")
#在指定窗口显示图像
cv2.imshow("Cute",img)
#等待任意按键退出
cv2.waitKey(0)
#关闭所有窗口
cv2.destroyAllWindows()
show_image("images/cute.jpg")
Open CV Python显示视频
cpp
import cv2
import numpy as np
def show_video(video_path,device_idx=0,window_name="Video",target_fps=30):
#创建视频捕获对象
cap = cv2.VideoCapture()
#选择视频源(摄像头或视频文件),device_idx=-1表示显示视频文件
#1.摄像头(默认摄像头索引为0)
if device_idx!=-1 and not video_path:
cap.open(device_idx)
#2.视频文件
else:
cap.open(video_path)
#检测视频源是否存在
if not cap.isOpened():
print(f"Error : Could not open video source!")
return
#定义视频播放窗口
cv2.namedWindow(window_name,cv2.WINDOW_AUTOSIZE)
#主循环:逐帧读取和显示
while True:
ret, frame = cap.read() #ret:bool,视频帧读取是否成功;frame:视频帧图像
#判断视频帧是否有效
if not ret:
print(f"End of video stream!")
break
cv2.imshow(window_name,frame) #显示视频帧
#按ESC键退出,控制视频帧率
key=cv2.waitKey(target_fps)
if key == 27:
print("Exit by user request!")
break
#释放资源
cap.release()
cv2.destroyAllWindows()
#显示示例视频
show_video(video_path="videos/example.mp4",window_name="Example Video",target_fps=40)