https://www.jianshu.com/p/9e5e7e62e466
参考stackoverflow,可行的方法为
一、使用glCopyImageSubData,这个方法最直观而且简单。不过需要 OpenGL 4.3
二、为目标texture创建FBO。使用shader,采用texture2D把源texture画到目标texture
三、为源texture创建FBO。使用glCopyTexSubImage2D从framebuffer拷贝到目标纹理
fboId = srcTex->GetFrameBufferId();
glBindFramebuffer(GL_FRAMEBUFFER, fboId);
outTexId = dstTex->GetTextureId();
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, outTexId);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
0, 0, srcTex->GetWidth(), srcTex->GetHeight());
glBindTexture(GL_TEXTURE_2D, 0);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
四、glBlitFramebuffer。这个需要OpenGL ES 3.0以上支持
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, tex1, 0);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT1,
GL_TEXTURE_2D, tex2, 0);
glDrawBuffer(GL_COLOR_ATTACHMENT1);
glBlitFramebuffer(0, 0, width, height, 0, 0, width, height,
GL_COLOR_BUFFER_BIT, GL_NEAREST);
五、glCopyPixels,还不知道怎么用
https://stackoverflow.com/questions/23981016/best-method-to-copy-texture-to-texture
https://stackoverflow.com/questions/16100308/how-to-copy-texture1-to-texture2-efficiently
https://www.jianshu.com/p/9e5e7e62e466参考stackoverflow,可行的方法为一、使用glCopyImageSubData,这个方法最直观而且简单。不过需要 OpenGL 4.3二、为目标texture创建FBO。使用shader,采用texture2D把源texture画到目标texture三、为源texture创建FBO。使用glCop...
打开 CMakeLists.txt 发现,没有将Pangolin链接过来,因此在文件末尾加上
target_link_libraries(trajError ${Pangolin_LIBRARIES})
就可以编译编译通过了。
查看报错信息:
/home/changym/sources/opencv-4.4.0/modules/gapi/test/gapi_async_test.cpp:448:26: error: ‘sleep_for’ is not a member of ‘std::this_thread’
448 | std::this_thread::sleep_for(std::chrono::milliseconds{2});
| ^~~
一种是直观的使用
glGetTex
Image,然后获取数据到内存再贴上去,这种方法很慢
另一种是使用FBO,将纹理附加到FBO,然后用
glCopyTex
SubImage2D,不涉及跟内存交换数据,速度飞快。
方法一:获取纹理再
拷贝
unsigned char *
data = new unsigned char[normal_
texture.width*normal_
texture.Hight*4];
glBind
Texture(
GL_
TEXTURE_2D,src_id);
Node.js,简称Node,是
一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Goo
gle Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。
Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。
在实践
中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于Faster RCNN的人脸检测识别系统python源码+项目说明+wider_face数据集.zip
### 三,使用说明
1. 锚框的大小为[128、256、512],比率为[1:1、1:2、2:1]。
2. tensorflow的版本是'1.9.0',keras的版本是'2.1.5',除了使用tensorflow2.0之后版本,其他版本都可以尝试。不支持python2.x。
3. 使用的是tensorflow backend,theano可以自行修改。
4. wider face的Label文件格式与VOC2012的label不同,而我使用的Faster RCNN需要VOC2012的格式,所以需要将label文件转换一下格式。具体可以查看
[https://blog.csdn.net/qq_37431083/article/details/102742322](https://blog.csdn.net/qq_37431083/article/details/102742322)
5. 在训练过程中可能会出现`"ValueError: 'a' cannot be empty
在知识经济时代,技术创新是实现经济内生增长的关键动力,
科技优势成为经济竞争优势的根本源泉。新一轮科技革命和产业变革加速,全球创新速度加
快,我国正在经历发展方式转变、经济结构优化、新旧动能转换的攻关期,创新日益成为破
解发展难题的关键。专利作为技术与知识的载体,其申请数量是创新研究
中衡量创新最常用
的指标之一,
中国成为创新领先国家也同样体现在专利申请量上。改革开放 40 年来,
我们的知识产权事业取得了举世瞩目的巨大成功,但也面临着“大而不强”的问题。引导专
利从追求数量向提高质量转变,这是国家近几年的政策扶持重点,也是未来专利申请审查的
一个风向标,针对海量专利数据的价值识别与预测,逐渐成为当前的研究热点。
供了1985-2022年广东省的企业专利明细数据,可用于各类专利相关研究。
数据来源:
数据来源为国家知识产权局,利用知识产权局的高级检索,选择地区、年份、
专利类型,对全国31省的各类专利进行统计并将检索结果整理为面板数据,包括发明公开
、发明授权、实用
可以使用OpenGL ES在Android中将一个SurfaceTexture的内容复制到另一个SurfaceTexture中。以下是实现此操作的基本步骤:
1.创建一个新的SurfaceTexture和相关的Surface。
```java
SurfaceTexture surfaceTexture1 = new SurfaceTexture(0);
Surface surface1 = new Surface(surfaceTexture1);
SurfaceTexture surfaceTexture2 = new SurfaceTexture(0);
Surface surface2 = new Surface(surfaceTexture2);
2.使用第一个SurfaceTexture作为纹理绑定到OpenGL ES程序中。
```java
int textureId;
GLES20.glGenTextures(1, textureId, 0);
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textureId);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
surfaceTexture1.setDefaultBufferSize(width, height);
surfaceTexture1.setOnFrameAvailableListener(new MyOnFrameAvailableListener());
Surface surface = new Surface(surfaceTexture1);
3.创建一个OpenGL ES程序,并将第一个SurfaceTexture作为输入纹理。
```java
int program = GLES20.glCreateProgram();
int vertexShader = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
int fragmentShader = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);
GLES20.glLinkProgram(program);
GLES20.glUseProgram(program);
int aPosition = GLES20.glGetAttribLocation(program, "aPosition");
int aTextureCoordinates = GLES20.glGetAttribLocation(program, "aTextureCoordinates");
int uTextureMatrix = GLES20.glGetUniformLocation(program, "uTextureMatrix");
int uTextureSampler = GLES20.glGetUniformLocation(program, "uTextureSampler");
FloatBuffer vertexBuffer = ByteBuffer.allocateDirect(4 * 2 * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
vertexBuffer.put(new float[]{-1, -1, 1, -1, -1, 1, 1, 1}).position(0);
FloatBuffer textureCoordinatesBuffer = ByteBuffer.allocateDirect(4 * 2 * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
textureCoordinatesBuffer.put(new float[]{0, 0, 1, 0, 0, 1, 1, 1}).position(0);
GLES20.glVertexAttribPointer(aPosition, 2, GLES20.GL_FLOAT, false, 0, vertexBuffer);
GLES20.glVertexAttribPointer(aTextureCoordinates, 2, GLES20.GL_FLOAT, false, 0, textureCoordinatesBuffer);
GLES20.glEnableVertexAttribArray(aPosition);
GLES20.glEnableVertexAttribArray(aTextureCoordinates);
Matrix.setIdentityM(textureMatrix, 0);
GLES20.glUniformMatrix4fv(uTextureMatrix, 1, false, textureMatrix, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textureId);
GLES20.glUniform1i(uTextureSampler, 0);
4.在onFrameAvailable回调中更新第一个SurfaceTexture并将数据复制到第二个SurfaceTexture中。
```java
class MyOnFrameAvailableListener implements SurfaceTexture.OnFrameAvailableListener {
@Override
public void onFrameAvailable(SurfaceTexture surfaceTexture) {
surfaceTexture.updateTexImage();
surfaceTexture.getTransformMatrix(textureMatrix);
GLES20.glViewport(0, 0, width, height);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
surface2.attachToGLContext(textureId);
surfaceTexture2.updateTexImage();
surface2.detachFromGLContext();
5.最后,您可以使用第二个SurfaceTexture来显示输出图像。
```java
mRenderer = new MyRenderer(surfaceTexture2);
mSurfaceView = new GLSurfaceView(this);
mSurfaceView.setEGLContextClientVersion(2);
mSurfaceView.setRenderer(mRenderer);
setContentView(mSurfaceView);