Camera2在预览的TextureView上画矩形

2024-05-10 16:48

本文主要是介绍Camera2在预览的TextureView上画矩形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Camera2在预览的TextureView上画矩形

盖天地不全,这经原是全全的,今沾破了, 乃是应不全之奥妙也,岂人力 所能与耶! 愿来者补充

使用手机摄像头进行人脸检测,对图像进行处理然后,画出矩形在预览的图像中。其他的也类似。

使用TextureView对Camera进行预览,然后想在上面画出矩形,使用了TextureView类的方法,但都不行。,其他人解释是:进行预览的时候,是使用了GPU进行渲染,在硬件层进行操作。。而TextureView类的方法都是在软件层进行改动,是没有办法进行修改的。

尝试一

  使用跟SurfaceView一样的方法,处于底层并在上层进行画框。但是就第一步就不行,TextureView就没有办法处于底层。

尝试二

直接弄个透明的ImageView进行覆盖,然后再ImageView中画框,尝试了一下,好像还是不行,不过我觉得有救,哈哈。 

最终版本:

既然SurfaceView可以处于顶层,那我就是用一个透明的Surfaceview处于顶层然后,在SurfaceView中画框。就可以了

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".camera.CameraActivity">
<FrameLayout
    android:id="@+id/frame_layout_rect"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextureView
            android:id="@+id/texture"android:layout_width="wrap_content"android:layout_height="wrap_content"/><SurfaceView
            android:id="@+id/surfaceview"android:layout_width="wrap_content"android:layout_height="wrap_content" /></FrameLayout>
</RelativeLayout>

这里是设置一下SurfaceView并获取到surfaceHolder便于后面画框

   surfaceview.setZOrderOnTop(true);//处于顶层surfaceview.getHolder().setFormat(PixelFormat.TRANSPARENT);//设置surface为透明surfaceHolder=surfaceview.getHolder();

画框,,其中还有一个重要的,怎么清楚掉上一次的画框。
很简单,但是我也很麻烦

   //定义画笔Paint mpaint = new Paint();mpaint.setColor(Color.BLUE);// mpaint.setAntiAlias(true);//去锯齿mpaint.setStyle(Paint.Style.STROKE);//空心// 设置paint的外框宽度mpaint.setStrokeWidth(2f);Canvas canvas=new Canvas();canvas =  surfaceHolder.lockCanvas();canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); //清楚掉上一次的画框。Rect r = new Rect(0,0,100,100); canvas.drawRect(r, mpaint); surfaceHolder.unlockCanvasAndPost(canvas);

到这里就可以可以实现上述功能了,哈哈。

这篇关于Camera2在预览的TextureView上画矩形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977003

相关文章

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

第二天旅游线路规划和预览

第二天:从克拉玛依市乌尔禾区到五彩滩,晚上住宿贾登峪; 规划结果见下图: 1、行程安排 根据上面的耗时情况,规划一天的行程安排如下: 1)早上7:30起床,吃完早饭,8:30出发; 2)从克拉玛依市乌尔禾区到五彩滩风景区,路程229公里,车程3小时,中午12:00左右到达五彩滩景区; 3)中午吃饭1小时; 3)五彩滩游玩时间约3小时,在五彩滩游玩到16:00; 4)乘车前往阿勒泰地区布尔津县

uni-app--》打造个性化壁纸预览应用平台(三)

🏙️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名前端工程师 🌄个人主页:亦世凡华、 🌆系列专栏:uni-app 🌇座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽所有光芒。 👀引言 ⚓经过web前端的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了uni-app专栏,对于想从移动端开发方向进一步发展的朋友,希望看到我文章的朋友能对你有所帮助。

NYOJ 16 矩形嵌套

OJ题目 : http://acm.nyist.net/JudgeOnline/problem.php?pid=16 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除

【数据结构-二维前缀和】力扣1504. 统计全 1 子矩形

给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 输入:mat = [[1,0,1],[1,1,0],[1,1,0]] 输出:13 解释: 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有 1 个 2x2 的矩形。 有 1 个 3x1 的矩形。 矩形数目总共 = 6 + 2 + 3 + 1 +

牛客网《剑指Offer》 矩形覆盖

题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? class Solution {public:int rectCover(int number) {if(number==0) return 0;if(number==1) return 1;if(number==2) return 2;retu

【每日一题】LeetCode 84.柱状图中最大的矩形(栈、数组、单调栈)

【每日一题】LeetCode 84.柱状图中最大的矩形(栈、数组、单调栈) 题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 这个题目和接雨水非常类似 点击跳转接雨水 LeetCode 40.接雨水 输入示例 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的

OpenCV 旋转矩形边界

边界矩形是用最小面积绘制的,所以它也考虑了旋转。使用的函数是**cv.minAreaRect**()。 import cv2import numpy as npimg=cv2.imread(r'D:\PythonProject\thunder.jpg')img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)print(img.dtype)ret,thres