VIDIOC_S_CROP ioctl会传入一个v4l2_crop给驱动程序
crop.c.left, crop.c.top. crop.c.width, crop.c.height定义了一个长方形区域,这个区域是capture或者overlay模式下的取景范围,
举个例子,图片的active(actual) size是720x576, 现在你只想capture或者overlay (64,64) ,(556, 64), (64,512),(556, 512)这四个点组成区域内的像素. 即在原始图像上下左右各裁掉64像素大小, 那么可如下设置
memset(&crop, 0, sizeof(struct v4l2_crop));
crop.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
crop.c.left = 64;
crop.c.top = 64;
crop.c.width = 592;
crop.c.height = 448;
ret = xioctl(fd, VIDIOC_S_CROP, &crop);
if (ret) {
printf("xioctl VIDIOC_S_CROP failed, errno(%d)\n", errno);
exit(EXIT_FAILURE);
}
本文详细解释了如何使用VIDIOC_S_CROPioctl函数结合v4l2_crop结构体进行图像裁剪操作,通过设置crop.c.left,crop.c.top,crop.c.width,crop.c.height属性来调整capture或overlay模式下的取景范围,以适应不同应用场景的需求。

1070

被折叠的 条评论
为什么被折叠?



