数字图像处理(1)OpenCV C++ & Opencv Python显示图像和视频

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)
相关推荐
数字融合17 分钟前
透明化视频孪生虚实映射一体化融合技术
人工智能·python·数码相机
jack1868934 分钟前
Lovable.Dev 全栈应用快速落地实战指南
python
华研前沿标杆游学1 小时前
【标杆研学】走进茅台集团|对标学习长期主义与匠心精神
python
GitFun2 小时前
KDJ vs RSI:11年数据实测,金叉死叉输了48个点
python·股票·量化交易
李可以量化2 小时前
从零读懂配对交易(上):从套利本源到配对交易的核心逻辑
python·区块链·量化交易·通达信·qmt
CCblandy2 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
wangchunyu1142 小时前
Python 数据可视化实战入门教程
开发语言·python·信息可视化
蜗牛互联网2 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
SL_staff2 小时前
当规则引擎开始‘懂业务’:JVS-Rules金融风控四大原生能力拆解
java·python·全栈
蚰蜒螟3 小时前
从内核启动到 Java NIO:一次 socket accept 的源码串联之旅
java·python·nio