如何在OpenCV Java中为图像或视频绘制中线
在OpenCV Java环境下为图像或视频画面绘制中线的解决方案
最近我刚好搞定了这个需求,把在OpenCV Java里给图像或者视频流绘制中线的方法分享给大家:
核心思路很简单:先获取画面的宽度和高度,计算出中线的两个端点(左端点在画面左侧中间,右端点在画面右侧中间),然后用OpenCV的画线方法在每一帧上绘制这条线即可。
下面是完整的实现代码:
Mat frame = new Mat(); VideoCapture camera = new VideoCapture(0); // 获取视频帧的宽度和高度 int frame_width = (int) camera.get(Videoio.CAP_PROP_FRAME_WIDTH); // 示例值:640 int frame_height = (int) camera.get(Videoio.CAP_PROP_FRAME_HEIGHT); // 示例值:480 // 定义中线的两个端点 Point middle_of_frame_left = new Point(); Point middle_of_frame_right = new Point(); middle_of_frame_left.x = 0; middle_of_frame_left.y = frame_height / 2; // 坐标为(0, 240)(以480高度为例) middle_of_frame_right.x = frame_width; middle_of_frame_right.y = frame_height / 2; // 坐标为(640, 240)(以640宽度为例) while (true) { // 读取下一帧视频画面 if (camera.read(frame)) { // 绘制红色中线,线宽为5 Imgproc.line(frame, middle_of_frame_left, middle_of_frame_right, new Scalar(0, 0, 255), 5); // 这里可以添加显示帧的代码,比如HighGui.imshow("Frame", frame); HighGui.waitKey(1); } }
代码说明:
VideoCapture(0):调用电脑的默认摄像头获取视频流,如果是处理本地视频文件,可以替换为视频文件路径Videoio.CAP_PROP_FRAME_WIDTH/CAP_PROP_FRAME_HEIGHT:获取视频帧的宽高参数Imgproc.line():参数依次为要绘制的图像、起点、终点、颜色(这里是红色,BGR格式)、线宽- 注意如果需要显示画面,记得添加
HighGui.imshow和HighGui.waitKey的代码,否则看不到绘制后的效果
内容的提问来源于stack exchange,提问作者Hareeshkumar
相关产品推荐
相关产品推荐

