Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果
研究了一天,发现最终代码只有几行,所以简单记录一下.
到写 这篇记录为止,我没有发现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实现视频流负片的效果相关推荐
- 在Qt Creator中添加OpenCV库
在项目的pro文件中添加如下代码: INCLUDEPATH += D:/opencv/build/include win32:CONFIG(debug, debug|release): { LIBS ...
- 在Cmakelist中添加opencv遇到的问题
问题 编译一个开源项目,该项目的Cmakelist: find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) if(N ...
- 瑞芯微读取寄存器_【rockchip PX30平台】uboot中读取I2C设备的寄存器值
前言 最近项目中有块rockchip的板子需要同时适配两块LCD,但是没看到RK平台本身有这个功能,所以我们想到通过TP本身提供的sensor id去判断,然后做相应的初始化动作. 所以我们需要先看一 ...
- 在URL中添加UTM链接标签追踪流量效果
Google Analytics是我们熟悉的网站分析工具,具有简洁实用的网站分析功能.通过对网页加入名为"ga.js"的javascript的脚本,我们可以了解整个网站的流量(tr ...
- java 界面艺术字,Java 在Word文档中添加艺术字
与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...
- shell脚本:批量修改文件名(文件名中添加字符)
举例如下:批量创建10个随机字符串的文件,要求每个文件名后面添加_aaa,后缀名不变: [root@localhost goodboy]# ls adddbbdedf.html baacjaiija ...
- java设置标签艺术字体颜色_Java 在Word文档中添加艺术字
与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...
- 在Qt中添加菜单图标
第一步:新建Qt Widgets Application,取合适的项目名称,基类选择QMainWindow,类名为MainWindow. 第二步:创建完项目后,双击mainwindow.ui文件进入设 ...
- java gui 艺术字_Java 在Word文档中添加艺术字
与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...
最新文章
- java多附件上传 实例demo
- Client使用c#和odp.net连接server oracle
- 如何判断基因组的重复区域_Nat Comm. | 15万人类基因组中多核苷酸变异(MNV)的起源及功能研究...
- 钢琴家软件里曲谱的数据为什么更新不了_企业信息化为什么到现在还是做不好...
- 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
- 【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)
- JS应用DOM入门:DOM的对象属性
- 百练_4123 马走日(深搜)
- QQ在线客服代码(不需要加好友即可发起临时会话)
- elasticsearch之 hdfs上的备份和还原操作
- python在d盘创建txt文件_python中如何创建一个txt文件
- nx零件库插件_支持Fusion 360软件的3DSource零件库插件发布
- 一零四五、FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values Expressio
- php创蓝253四要素认证_【PHP】创蓝253云通讯平台国际短信API接口demo
- 人工智能工程师第七期-AI100-专题视频课程
- 本人写的一个傲娇的语句
- 苹果手机相册怎么分类_电子相册怎么做?用手机app可以剪辑电子相册视频吗?...
- java飘落的雪花_[Java教程]实现雪花飘落效果
- 人工智能AI论文优选:AI简史A BRIEF HISTORY OF AI: HOW TO PREVENT ANOTHER WINTER
- mysql新加一列_如何使用mysql在建好的表中添加一列