TI专家您好,
关于如何从opencv创建的Mat类型的数据如何在TIOVX中利用vxNorNode的取反操作时,我发现利用vx_image in_img1 vxCreateImageFromHandle(context,VX_DF_IMAGE_U8,&addr,&ptr,VX_MEMORY_TYPE_HOST)从opencv获取的图像,在进行vxNorNode后并未输出算法效果。
而另外一种将opencv的数据通过imwrite写到本地后,再利用vx_image in_img2 tivx_utils_create_vximage_from_bmpfile加载出来的图像,在进行vxNorNode后则能执行取反算法。
对此,我比较疑惑,vxCreateImageFromHandle的用法不就是创建对外部分配图像对象的引用吗?而opencv创建Mat对象的地址相关信息已传给vxCreateImageFromHandle,且通过vxQueryImage获取in_img1的图像相关属性和in_img2的都是一摸一样,且两者在vxNorNode节点操作前打印的像素值也是一致的,但vx_node node0=vxNotNode(graph,in_img1,out_img)和node0=vxNotNode(graph,in_img2,out_img)后,打印 out_img 的像素值,前者却没有进行图像取反操作。
是否vxCreateImageFromHandle从外部系统获取的图像不能直接进行图像的相关处理?如果确实不能这样直接操作的话,那么是否只能用后者的方式,那么关于vxCreateImageFromHandle的用法又该如何利用呢?而通过保存到本地再加载出来处理的方式是否比较耗时呢?
望不吝赐教,期待您的回复!
best wish!
Ling Wang
opencv创建图像的代码如下:
vx_uint32 width=16;
vx_uint32 height=5;
cv::Mat img(height,width,CV_8UC1,Scalar(0));
img(Rang(1,5),Rang(1,5))=Scalar(255);
//imwrite("inImg_cvSave.bmp",img);
vx_imagepatch_addressing_t addr;
addr.dim_x=width;
addr.dim_y=height;
addr.stride_x=1;
addr.stride_y=16;
addr.step_x=1;
addr.step_y=1;
addr.scale_x=VX_SCALE_UNITY;
addr.scale_y=VX_SCALE_UNITY;
void * ptr=img.data;
