当前位置:网站首页>【OPENVX】对象基本使用之vx_node
【OPENVX】对象基本使用之vx_node
2022-07-22 23:11:00 【zhy29563】
#include <iostream>
#include <iomanip>
#include <VX/vx.h>
vx_image make_image(vx_context context, vx_int32 half_w, vx_int32 half_h)
{
vx_image image = vxCreateImage(context, 100U, 100U, VX_DF_IMAGE_U8);
vx_rectangle_t rect = {
.start_x = 50U - half_w, .start_y = 50U - half_h, .end_x = 0U + half_w, .end_y = 50U + half_h};
vx_image roi = vxCreateImageFromROI(image, &rect);
vx_pixel_value_t pixel_white, pixel_black;
pixel_white.U8 = 255;
pixel_black.U8 = 0;
vxSetImagePixelValues(roi, &pixel_white);
return image;
}
int main(int argc, char *argv[])
{
vx_status status = VX_SUCCESS;
vx_context context = vxCreateContext();
vx_graph graph = vxCreateGraph(context);
vx_image input_image = vxCreateImage(context, 100U, 100U, VX_DF_IMAGE_U8);
vx_float32 strength_thresh_value = 128.0f;
vx_scalar strength_thresh = vxCreateScalar(context, VX_TYPE_FLOAT32, &strength_thresh_value);
vx_array corners = vxCreateArray(context, VX_TYPE_KEYPOINT, 100);
vx_size num_corners_value = 0;
vx_scalar num_corners = vxCreateScalar(context, VX_TYPE_SIZE, &num_corners_value);
vx_node node = vxFastCornersNode(graph, input_image, strength_thresh, vx_true_e, corners, num_corners);
// 查询属性
{
vx_status node_state;
vxQueryNode(node, (vx_enum)VX_NODE_STATUS, &node_state, sizeof(node_state));
vx_directive_e performance;
vxQueryNode(node, (vx_enum)VX_NODE_PERFORMANCE, &performance, sizeof(performance));
vx_border_t border_mode;
vxQueryNode(node, (vx_enum)VX_NODE_BORDER, &border_mode, sizeof(border_mode));
// 指示kernel中局部内存的大小
vx_size data_size;
vxQueryNode(node, (vx_enum)VX_NODE_LOCAL_DATA_SIZE, &data_size, sizeof(data_size));
// 指示kernel中局部内存的地址
void *data_ptr;
vxQueryNode(node, (vx_enum)VX_NODE_LOCAL_DATA_PTR, &data_ptr, sizeof(data_ptr));
vx_uint32 num_params;
vxQueryNode(node, (vx_enum)VX_NODE_PARAMETERS, &num_params, sizeof(num_params));
vx_bool replicated;
vxQueryNode(node, (vx_enum)VX_NODE_IS_REPLICATED, &replicated, sizeof(replicated));
vx_bool *replicated_flags;
vxQueryNode(node, (vx_enum)VX_NODE_REPLICATE_FLAGS, &replicated_flags, sizeof(replicated_flags));
vx_bool rect_reset;
vxQueryNode(node, (vx_enum)VX_NODE_VALID_RECT_RESET, &rect_reset, sizeof(rect_reset));
}
// 设置属性
{
vx_pixel_value_t pixel_value{
.U8 = 128U};
vx_border_t border_mode{
.mode = VX_BORDER_CONSTANT, .constant_value = pixel_value};
vxSetNodeAttribute(node, (vx_enum)VX_NODE_BORDER, &border_mode, sizeof(border_mode));
}
// 复制节点,用于处理存储在 vx_pyramid 或者 vx_object_array 中的对象集合
// 指定节点 first_node 需要具有能够处理 vx_pyramid 第0层的参数或者 vx_object_array 中索引为 0 的对象的参数。
// 复制的节点不能通过任何方式进行访问。
// 当移除 first_node 时,所有的复制节点都被移除
// first_node 节点的参数或属性发生变化,复制节点同步变化。
// vxVerifyGraph 强制所有的复制节点具有相同的参数
{
vx_bool replicate[5]{
vx_true_e, vx_true_e, vx_true_e, vx_true_e, vx_true_e};
vxReplicateNode(graph, node, replicate, 5);
}
// 设置节点目标。运行成功后,使得节点所属的图失效。目前不知如何使用
// vx_status vxSetNodeTarget(vx_node node, vx_enum target_enum, const char *target_string);
// 从 graph 中移除节点,同时释放节点
vxRemoveNode(&node);
if (node != NULL)
vxReleaseNode(&node);
vxReleaseImage(&input_image);
vxReleaseArray(&corners);
vxReleaseScalar(&num_corners);
vxReleaseScalar(&strength_thresh);
vxReleaseGraph(&graph);
vxReleaseContext(&context);
return EXIT_SUCCESS;
}
边栏推荐
- What type of die cutting machine can be used for paper?
- 标准C语言10
- 深度解析kube-scheduler调度上下文
- Redis 持久化操作 (RDB, AOF)
- appendToFile追加失败
- Three cache strategies: cache side strategy, read/write through strategy, and write back strategy
- 【超全整理】思科和华为命令对比备忘录,拿走不谢!随时随地可查看
- promise(一)
- MySQL uses SQL statements to query all data with a field value divided by 10 equal to 0
- flink通过ProcessFunction和定时器onTimer实现一个窗口累加的功能
猜你喜欢

EMQX v4.4.5 发布:新增排他订阅及 MQTT 5.0 发布属性支持

Mria + RLOG 新架构下的 EMQX 5.0 如何实现 1 亿 MQTT 连接

【JS 逆向百例】某公共资源交易网,公告 URL 参数逆向分析

深度解析kube-scheduler调度上下文

Redis persistence operation (RDB, AOF)

promise(一)

Promise (I)

三种缓存策略:Cache Aside 策略、Read/Write Through 策略、Write Back 策略

DP+回溯分割回文串的系列问题

Okaleido tiger NFT即将登录Binance NFT平台,你期待吗?
随机推荐
What is NFT? You don't know yet!
Shell variables, system predefined variables $home, $pwd, $shell, $user, custom variables, special variables $n, $, $*, [email protected],
TextView展示不完的内容实现--全显示、部分显示
Change this point to understand
buu web
C language function (1)
阿里云国际版账户收到账号风险通知,怎么办?
三种缓存策略:Cache Aside 策略、Read/Write Through 策略、Write Back 策略
网站图标的实现
Bufferedinputstream buffer fill problem
Go concurrent programming basics: what is context
DP+回溯分割回文串的系列问题
Typescript对象扩展之对象原型__proto__与prototype
微信小程序中使用全局数据实现数据共享
什么时候使用UserCF,什么时候使用ItemCF?
RPC-BDY(5)-服务自动注销、负载均衡
What if Alibaba cloud international forgets its member name or login password?
小红书携手HMS Core,畅玩高清视界,种草美好生活
算法---二维数组网格迁移(Kotlin)
Flink高级API(三)