小编mr.*_*leo的帖子

Android相机2 api BufferQueue已被放弃

我正在测试新的Android camera2 API,我希望从相机控制每一帧.我为此做的是创建一个ImageReader并设置分辨率和图像格式.

ImageReader imageReader = ImageReader.newInstance(1280,720,ImageFormat.YUV_420_888,1);
imageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
    @Override
    public void onImageAvailable(ImageReader reader) {
        Image image = reader.acquireLatestImage();
        Log.i(MainActivity.LOG_TAG,"imageReader: "+System.currentTimeMillis());
        image.close();
    }
},null);
Run Code Online (Sandbox Code Playgroud)

之后,我使用参数TEMPLATE_PREVIEW创建新的CaptureRequest并向他添加目标.对于cameraCaptureSession,我使用此请求创建新的setRepeatingRequestimageReader

 try {
    final CaptureRequest.Builder builder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);

    builder.addTarget(imageReader.getSurface());

    mCameraDevice.createCaptureSession(
            Arrays.asList(imageReader.getSurface()),
            new CameraCaptureSession.StateCallback() {
                @Override
                public void onConfigured(CameraCaptureSession session) {
                    mSession = session;
                    try {
                        mSession.setRepeatingRequest(builder.build(),null,null);
                    } catch (CameraAccessException e) {
                        e.printStackTrace();
                    }
                }
                @Override
                public void onConfigureFailed(CameraCaptureSession session) {

                }
            },
            null
    );
} …
Run Code Online (Sandbox Code Playgroud)

java android camera2

16
推荐指数
1
解决办法
9343
查看次数

camera2 api将yuv420转换为rgb green out

我尝试将图像从YUV_420_888转换为rgb,我对输出图像有些麻烦.在ImageReader中,我以YUV_420_888格式获取图像(使用相机2 api获取此图像预览).

imageReader = ImageReader.newInstance(1920,1080,ImageFormat.YUV_420_888,10);
Run Code Online (Sandbox Code Playgroud)

在android sdk中为YuvImage类编写,即YuvImage仅使用NV21,YUY2.

因为我们可以看到N21和yuv420之间的差异不大,我尝试将数据转换为N21

YUV420: 在此输入图像描述

N21: 在此输入图像描述

onImageAvailable中我单独获得每个Planes并将它们放在正确的位置(如图像所示)

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

ByteBuffer bufferY = image.getPlanes()[0].getBuffer();
byte[] data0 = new byte[bufferY.remaining()];
bufferY.get(data0);

ByteBuffer bufferU = image.getPlanes()[1].getBuffer();
byte[] data1 = new byte[bufferU.remaining()];
bufferU.get(data1);

ByteBuffer bufferV = image.getPlanes()[2].getBuffer();
byte[] data2 = new byte[bufferV.remaining()];
bufferV.get(data2);
...
outputStream.write(data0);
for (int i=0;i<bufferV.remaining();i++) {
    outputStream.write(data1[i]);
    outputStream.write(data2[i]);
}
Run Code Online (Sandbox Code Playgroud)

创建YuvImage后,转换为Bitmap,查看并保存

final YuvImage yuvImage = new YuvImage(outputStream.toByteArray(), ImageFormat.NV21, 1920,1080, null);
ByteArrayOutputStream outBitmap = new ByteArrayOutputStream();

yuvImage.compressToJpeg(new Rect(0, 0,1920, 1080), 95, outBitmap);

byte[] …
Run Code Online (Sandbox Code Playgroud)

android image yuv android-camera

8
推荐指数
1
解决办法
8233
查看次数

Qt QSslSocket“证书是自签名的,并且不受信任”

我想用 QSslSocket 连接服务器,在服务器上我得到 soketSslError “证书是自签名的,并且不受信任”,但我不明白为什么会出现此错误。

第一步是使用 openssl 为服务器和客户端生成文件

$openssl req -new -newkey rsa:1024 -keyout ca.key -x509 -days 500 -out ca.crt
$openssl req -new -newkey rsa:1024 -keyout client01.key -out client01.csr
$openssl ca -config ca.config -in  client01.csr -out client01.crt -batch
Run Code Online (Sandbox Code Playgroud)

在C++服务器/客户端中

在服务器上:

启动服务器

if (listen(QHostAddress::Any,this->connectingPort)) {
        std::cout<<"Server start on port: "<<this->connectingPort<<std::endl;
        return true;
    } else {
        std::cout<<"Cant start server. "<<errorString().toStdString().c_str()<<std::endl;
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

传入连接

    QFile keyFile("ca.key");
    if (!keyFile.open(QIODevice::ReadOnly)) {
        delete this->sslSocket;
        qDebug()<<"Cant open file: "<<keyFile.fileName();
        return false;
    }
    QByteArray pasp ="qwerty";
    QSslKey …
Run Code Online (Sandbox Code Playgroud)

c++ sockets qt qsslsocket server

5
推荐指数
1
解决办法
6983
查看次数

标签 统计

android ×2

android-camera ×1

c++ ×1

camera2 ×1

image ×1

java ×1

qsslsocket ×1

qt ×1

server ×1

sockets ×1

yuv ×1