研究了一天,发现最终代码只有几行,所以简单记录一下.

到写 这篇记录为止,我没有发现rv1126的gstreamer1补丁中,RK 没有为视频流提供负片效果的patch,
在RGA的API中, 确实有一个API很类似, imquantize(src, dst, nn_info), 但这个API的功能是
用图像的R,G,B,值 , 分别减去我们给的3个值, 最终效果感觉是在调整图像的曝光值, 但是负片效果 是用
255 减去 图像每个像素点的R,G,B值 , imquantize这个API当前无法实现,也许修改底层驱动能实现,看RK怎样看待这个功能了.

rv1126的SDK中gstreamer1有些常用的滤镜(gstElement)是有补丁实现RGA硬件加速的,例如旋转,放缩等等.
我要的负片效果, 用opencv实现就是一行代码, 只要把opencv整合进gstreamer就可以了.

我没有创建新的滤镜, 我选择了 pluging-bad中的 coloreffects滤镜, 往里面添加negetive特效.

OpenCv必须使用C++编译, 所以先把gstcoloreffects.c 改成 gstcoloreffects.cpp,当然Makefile必须跟着修改此文件名.
Makefile中头文件的目录设置是OK的, 指向($buildroot_output)/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include
不需要动. 只需要在GST_LIBS的后面 加上  -lopencv_core -lopencv_imgcodecs -lopencv_imgproc 就可以了.

1、
typedef enum
{
  GST_COLOR_EFFECTS_PRESET_NONE,
  GST_COLOR_EFFECTS_PRESET_HEAT,
  GST_COLOR_EFFECTS_PRESET_SEPIA,
  GST_COLOR_EFFECTS_PRESET_XRAY,
  GST_COLOR_EFFECTS_PRESET_XPRO,
  GST_COLOR_EFFECTS_PRESET_YELLOWBLUE,
  GST_COLOR_EFFECTS_PRESET_TOOTNEGATIVE, // <- 我添加的特效
} GstColorEffectsPreset;

2、
在GEnumValue presets[] 依胡芦画瓢添加特效名称和描述.
{GST_COLOR_EFFECTS_PRESET_TOOTNEGATIVE,
      "TOOT OpenCV2 Negative color filter", "tootnegative"},

3、
在 gst_color_effects_set_property()添加:
case GST_COLOR_EFFECTS_PRESET_TOOTNEGATIVE:
  filter->table = yellowblue_table; // 这里的值随便抄上面一个,反正用不到,但是必须赋值
  filter->map_luma = TRUE;
  break;

4、
最后在gst_color_effects_transform_???()最终实现特效的函数中加入opencv代码.
我的 gstelement sourc pad 的输入图像格式是RGBx , 所有在gst_color_effects_transform_rgb()中添加:

if(filter->preset == GST_COLOR_EFFECTS_PRESET_TOOTNEGATIVE ){

GstMapInfo map_info;
    cv::Mat cvframe;

if (!gst_buffer_map ((frame->buffer), &map_info, GST_MAP_READWRITE)) {
         gst_buffer_unmap ((frame->buffer), &map_info);
         GST_DEBUG_OBJECT (filter,"TOOT OpenCv gst_buffer_map failed...." );
         return  ;
     }

cvframe = cv::Mat( width,  height, CV_8UC4, (char *)map_info.data, cv::Mat::AUTO_STEP); //CV_8UC4这个类型需要根据你的src pad格式进行调整

cv::bitwise_not(cvframe, cvframe);  //opencv实现负片特效的一行代码
     // cvframe = cv::Scalar(255,255,255) - cvframe; // 这也是负片特效,但是好像比bitwise_not多花费几毫秒

gst_buffer_unmap ((frame->buffer), &map_info);

return;
}

实际运行效果是正确的负片图像 ,但是有个问题,就是会把整个pipeline给整延迟了一些,原因未知!

特此记录....

Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果相关推荐

  1. 在Qt Creator中添加OpenCV库

    在项目的pro文件中添加如下代码: INCLUDEPATH += D:/opencv/build/include win32:CONFIG(debug, debug|release): { LIBS ...

  2. 在Cmakelist中添加opencv遇到的问题

    问题 编译一个开源项目,该项目的Cmakelist: find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) if(N ...

  3. 瑞芯微读取寄存器_【rockchip PX30平台】uboot中读取I2C设备的寄存器值

    前言 最近项目中有块rockchip的板子需要同时适配两块LCD,但是没看到RK平台本身有这个功能,所以我们想到通过TP本身提供的sensor id去判断,然后做相应的初始化动作. 所以我们需要先看一 ...

  4. 在URL中添加UTM链接标签追踪流量效果

    Google Analytics是我们熟悉的网站分析工具,具有简洁实用的网站分析功能.通过对网页加入名为"ga.js"的javascript的脚本,我们可以了解整个网站的流量(tr ...

  5. java 界面艺术字,Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

  6. shell脚本:批量修改文件名(文件名中添加字符)

    举例如下:批量创建10个随机字符串的文件,要求每个文件名后面添加_aaa,后缀名不变: [root@localhost goodboy]# ls adddbbdedf.html  baacjaiija ...

  7. java设置标签艺术字体颜色_Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

  8. 在Qt中添加菜单图标

    第一步:新建Qt Widgets Application,取合适的项目名称,基类选择QMainWindow,类名为MainWindow. 第二步:创建完项目后,双击mainwindow.ui文件进入设 ...

  9. java gui 艺术字_Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

最新文章

  1. java多附件上传 实例demo
  2. Client使用c#和odp.net连接server oracle
  3. 如何判断基因组的重复区域_Nat Comm. | 15万人类基因组中多核苷酸变异(MNV)的起源及功能研究...
  4. 钢琴家软件里曲谱的数据为什么更新不了_企业信息化为什么到现在还是做不好...
  5. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  6. 【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)
  7. JS应用DOM入门:DOM的对象属性
  8. 百练_4123 马走日(深搜)
  9. QQ在线客服代码(不需要加好友即可发起临时会话)
  10. elasticsearch之 hdfs上的备份和还原操作
  11. python在d盘创建txt文件_python中如何创建一个txt文件
  12. nx零件库插件_支持Fusion 360软件的3DSource零件库插件发布
  13. 一零四五、FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values Expressio
  14. php创蓝253四要素认证_【PHP】创蓝253云通讯平台国际短信API接口demo
  15. 人工智能工程师第七期-AI100-专题视频课程
  16. 本人写的一个傲娇的语句
  17. 苹果手机相册怎么分类_电子相册怎么做?用手机app可以剪辑电子相册视频吗?...
  18. java飘落的雪花_[Java教程]实现雪花飘落效果
  19. 人工智能AI论文优选:AI简史A BRIEF HISTORY OF AI: HOW TO PREVENT ANOTHER WINTER
  20. mysql新加一列_如何使用mysql在建好的表中添加一列

热门文章

  1. Win7下如何在windows资源管理器中打开FTP
  2. 解决linux上的Give root password for maintenance问题
  3. Java 每年节假日获取
  4. 百个免费API接口分享,调用完全不限次数...
  5. git与repo区别?
  6. elementui 复制功能,无需下载插件纯原生实现
  7. vmware workstation pro 15.5.5 下载地址
  8. 如何使用扫码实现收派件?
  9. 在OpenJWeb平台中实现主动扫码(商家主动出示支付二维码)
  10. 计算机组装步骤图文详叙,详叙法