概述
第一个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对象。
vxReleaseContext(context_p);
- vxCreateImage()
生成一个`vx_image`对象。
vx_image image = vxCreateImage(context, 100U, 100U, VX_DF_IMAGE_U8);
- vx_rectangle_t
定义一个矩形
vx_rectangle_t rect = {
.start_x = 20, .start_y = 40, .end_x=80, .end_y = 60
};
- vxCreateImageFromROI()
将rect覆盖到image上,生成一个roi,roi持有原始image的索引,roi的改变将导致原始image的改变。
vx_image roi = vxCreateImageFromROI(image, &rect);
- vxSetImagePixelValues()
设置vx_image对象的颜色。
vxSetImagePixelValues(image, &pixel_black)
- vxReleaseImage()
释放一个vx_image对象。
- vxCreateScalar()
生成一个vx_scalar类型对象,这样才能被vx的node所使用。
vxCreateScalar(context, VX_TYPE_FLOAT32, &strength_thresh_value);
- vxCreateArray()
生成一个vx_array对象。
- vxCopyScalar()
拷贝一个vx_scale对象到一个地址.
// 拷贝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拷贝到一个地址。
// 将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算法。
// 使用非极大压制
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. example1.c所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复