declaration may not appear after executable statement in block

2024-03-03 16:18

本文主要是介绍declaration may not appear after executable statement in block,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


前些天就知道在TI提供的encodedecode demo里面,如果简单处理图像就直接在DSP端处理缓存就可以直接看到效果。原来在ARM端OPENCV交叉编译已经成功,
所以把EMCV库里面的 cv  cxcore文件夹里面的文件都复制到/demo/MyImageGray/codec/filecopy_dec/下面,然后在filecopy_dec.c中添加需要的结构
参考igor_facedetect.c里面用到的几个函数,只要那些函数包括在emcv中,基本就可以移植了。
首先 在  filecopy_dec.c  文件夹里面添加  #include"cv.h" 然后编译,会提示不少错误,都是一些语法问题的错误,有点基本C语言的基础都能修正,没有太大的问题。
这个函数中提示找不到 width 和 height这两个量。在OPENCV论坛里面有人说过这个,所以知道把width 和 height   改成 下面那种形式就可以了。参考下mat的定义,
也就知道为什么这么改了
CV_INLINE  CvSize  cvGetMatSize( const CvMat* mat )
{
//    CvSize size = { mat->width, mat->height };

    CvSize size;
    size.width = mat->cols;
    size.height = mat-> rows;
// = { mat->cols, mat->rows };
    return size;
}
修正一大堆语法错误以后在filecopy_dec.c 文件的PictureGray 中添加我们想要的数据结构 IplImage
然后编译

"filecopy_dec.c", line 200: error #270: declaration may not appear after executable statement in block

这个提示的意思大概是一个声明语句,要放在一个函数的开头,没有写执行语句之前。否则就会出现这个错误。

所以把这个IplImage的定义提到函数外 错误就削除了,改后的函数如下
#define IMAGESIZE (720*480)
static void PictureGray(void *pInbuf,void *pOutbuf,unsigned int len){unsigned int i;unsigned int * pIn = (unsigned int*)pInbuf;unsigned int * pOut= (unsigned int*)pOutbuf;unsigned char image[IMAGESIZE];len >>= 2;iplImage = cvCreateImageHeader(cvSize(720,480),IPL_DEPTH_8U,1);cvSetData(iplImage,image,720);
for(i=0;i<len;i++){*pOut = *pIn & 0xff00ff00|0x00800080;  image[i] = *( (unsigned char *)pIn +1 );image[i+1] = *( (unsigned char *)pIn +3) ;  //get the Y in image[] form a gray image   by dickpIn ++;pOut ++;}cvReleaseImageHeader(&iplImage);}

其实添加的部分就是把亮度提取出来变成一副图像,添加人脸识别只要在这个灰度图像上检测,然后根据检测结果去修改显示buffer就OK了,
暂时想到的就是这样做
明天继续吧。

这篇关于declaration may not appear after executable statement in block的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770177

相关文章

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq)  3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然

block对变量捕获的方式

之前见很多文章对block捕获变量的方法,会进行诸如此类的描述:“block会捕获被引用的变量, 并对其进行copy操作, 因此, 可能会导致其引用计数加1,如果处理不好, 可能因循环引用导致内存泄漏。” 实际上, 这种说法并不严谨。block对变量的捕获, 根据变量类型的不同,会采用不同的捕获方式。 (1)静态或者全局变量, 在block中直接是指针传递的方式传入block中,对其进行的操作

Linux block_device gendisk和hd_struct到底是个啥关系

本文的源码版本是Linux 5.15版本,有图有真相: 1.先从块设备驱动说起 安卓平台有一个非常典型和重要的块设备驱动:zram,我们来看一下zram这个块设备驱动加载初始化和swapon的逻辑,完整梳理完这个逻辑将对Linux块设备驱动模型有深入的理解。 zram驱动加载的时候会调用zram_add函数,源码如下: 1887/*1888 * Allocate and initia

数据库中关于preparedStatement和Statement分析

引用: http://zhidao.baidu.com/link?url=GT7fotu8j4V0Yf_gYwcceE1u2MsgT-6NKz18K_neo715rE-V11Ny-EHW4OZNkhFdvTM2LmSt4a83XypnfS1r0K http://blog.sina.com.cn/s/blog_77eba18f01019csh.html http://www.cnblogs.co

Oracle - ORA-01789: Query block has incorrect number of result columns

一、原因     这个错误一般是在执行表之间的相加(union),相减(minus)等SQL语句时,两个个查询块具有不一致的结果列数所导致的。 二、方案     只要将两段SQL语句的列数调整为一致就可以解决。使用union时,要注意数据库字段的格式要一致,如varchar和nvarchar是不一样的。

2、PrepareStatement 和 Statement的区别

场景再现: 我一直以为只是面试时会遇到的小知识点,结果刚刚工作的我就发现项目中的一个小程序,用的Statement。所以回顾他们有什么区别? 答案: 1、都是接口,但PrepareStatement 继承了Statement。   2、PrepareStatement 可以使用占位符,用“?”占位,是预编译时期替换为 值。批处理比Statement高。而Statement只能执行静态

ARC下的block导致的循环引用问题解析

引言 使用block已经有一段时间了,感觉自己了解的还行,但是几天前看到CocoaChina上一个关于block的小测试主题:【小测试】你真的知道blocks在Objective-C中是怎么工作的吗?,发现竟然做错了几道,才知道自己想当然的理解是错误的,所以抽时间学习了下,并且通过一些测试代码进行测试,产生这篇博客。 Block简介(copy一段) Block作为C语言的扩展,并不是高新

前端面试:对BFC规范(块级格式化上下文:block formatting context)的理解

块级格式化上下文(BFC)是一个独立的渲染区域,具有特定的布局规则。理解BFC对于前端开发非常重要,因为它影响元素的布局和定位。以下是对BFC的一些关键理解: 定义:BFC是一个HTML文档中的部分区域,内部的元素在该区域内独立于外部元素进行布局。BFC的创建可以通过特定的CSS属性,如overflow(非visible)、display: flow-root、position: absolut

error C4996: 'fopen': This function or variable may be unsafe.

今天在vs2013编程中遇到这样的错误:error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details

猫猫学iOS 之BLOCK的妙用_利用block实现链式编程

猫猫分享,必须精品 原创文章,欢迎转载。转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:场景 我们有个对象人,他有两个方法,一个是学习study,一个是跑步run, 这个人有个怪癖,跑完步之后必须学习,为了实现这个方法并且能调用方便,我们让跑步和学习都回返回自己这个对象作为下一次调用的快捷方式,代码如下: 调用: int main(