第一个VX程序
1. example1.c
该例子使用*Immediate模式*,对一幅图像进行fast corner提取。
具体程序功能说明请见*程序*注释。
2. 例子总结
2.1 代码结构:
首先生成一幅100x100的image并设置为黑色,然后从中间设置一个60x20的roi设置为白色。
通过immediate mode模式调用VX的fast corner算法获取角点并输出。
2.2使用到的VX对象总结:
- vxCreateContext()
生成一个vx_context对象。
- vxReleaseContext()
释放一个context对象。
复制代码
1vxReleaseContext(context_p);
- vxCreateImage()
生成一个`vx_image`对象。
复制代码
1vx_image image = vxCreateImage(context, 100U, 100U, VX_DF_IMAGE_U8);
- vx_rectangle_t
定义一个矩形
复制代码
1
2
3vx_rectangle_t rect = { .start_x = 20, .start_y = 40, .end_x=80, .end_y = 60 };
- vxCreateImageFromROI()
将rect覆盖到image上,生成一个roi,roi持有原始image的索引,roi的改变将导致原始image的改变。
复制代码
1vx_image roi = vxCreateImageFromROI(image, &rect);
- vxSetImagePixelValues()
设置vx_image对象的颜色。
复制代码
1vxSetImagePixelValues(image, &pixel_black)
- vxReleaseImage()
释放一个vx_image对象。
- vxCreateScalar()
生成一个vx_scalar类型对象,这样才能被vx的node所使用。
复制代码
1vxCreateScalar(context, VX_TYPE_FLOAT32, &strength_thresh_value);
- vxCreateArray()
生成一个vx_array对象。
- vxCopyScalar()
拷贝一个vx_scale对象到一个地址.
复制代码
1
2
3
4// 拷贝num_corners到num_corners_value中,可以用于输出 // VX_READ_ONLY: 将num_corners拷贝到num_corners_value // VX_WRITE_ONLY:将num_corners_value拷贝到num_corners vxCopyScalar(num_corners, &num_corners_value, VX_READ_ONLY, VX_MEMORY_TYPE_HOST)
- vxCopyArrayRange()
将指定范围的array拷贝到一个地址。
复制代码
1
2
3
4
5// 将corners拷贝到kp对应的内存,用于输出 // VX_READ_ONLY: 将corners拷贝到kp // VX_WRITE_ONLY:将kp拷贝到corners vxCopyArrayRange( corners, 0, num_corners_value, sizeof(vx_keypoint_t), kp, VX_READ_ONLY, VX_MEMORY_TYPE_HOST);
- vxuFastCorners()
使用immediate mode调用vx的fast corners算法。
复制代码
1
2
3
4// 使用非极大压制 vxuFastCorners(context, image1, strength_thresh, vx_true_e, corners, num_corners); // 不使用非极大压制 vxuFastCorners(context, image1, strength_thresh, vx_false_e, corners1, num_corners1)
最后
以上就是野性纸鹤最近收集整理的关于OpenVX编程笔记(二)第一个VX程序1. example1.c的全部内容,更多相关OpenVX编程笔记(二)第一个VX程序1.内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复