0%

统计代码的运行时间的方式有多种,opencv库也提供了几种,使用方便,但是和其他计时函数有容易混淆的地方。

cv库计时函数介绍

int64 getTickCount(void) 在window下得到性能计数器的值。
double getTickFrequency(void) 在window得到性能计数器的频率
使用如下代码计算时间。

1
2
3
double t = (double)getTickCount();
// 某一段程序
t = ((double)getTickCount() - t)/getTickFrequency();

到此为止了,很简单了,得到了某段程序的运行时间。
还是有一个混淆点需要注意和提醒的。就是和GetTickCount()不小心写混了。

getTickCount()和GetTickCount()混淆与避免方式

这个混淆一但写了可不容易发现。
前者是opencv的函数cv::getTickCount().得到性能计数器的值。
GetTickCount()是window的api,会返回window系统的时间。在window下,一旦误用,系统不会报错的。结果却是极具误导性的
它的精度不高10-16ms。既然返回的是自系统开始到调用时的时间,目前看文档它的值最多是49.7天,自然它也可以用来计时,不过精度不高。

只要记得不用混用以及类型转换(要转换为double,见上面的例子代码)就不会出错。

这个例子用基于形状匹配来配准roi区域,为之后检查刮胡刀刀片缺陷检测工具准备的。
根据选择程序在两种模式下运行:full affine transformation或者using translate_measure

代码流程如下

  1. USING_TRANSLATE_MEASURE := 0
    改整数表示选用哪种模式,根据字面意思,默认是不使用translate_measure
    通用程序不提,
  2. 读取图像后使用get_image_pointer1获取图像数据第一个通道的地址,数据类型,宽,高
    设置窗口大小,显示颜色等代码不提了
  3. 指定两个正矩形框,合并成一个区域,裁剪下来对应区域,之后直接使用该区域生成形状模型,以用于匹配。生成模型的函数create_shape_model

在pc端的图像处理中,我遇到的颜色编码方式主要rgb,但是在电视系统或者图像信号传输中,YUV的颜色编码方式更加常用,因为它被设计的占用带宽较少。
在海思35xx芯片的相机中的图像处理代码中,会遇到yuv420p、yuv420sp等其他YUV编码方式,对其需要有所了解。

阅读全文 »

在嵌入式图像处理中,c++读写图像往往不是那么方便,当然自己写一个图像处理的函数包含常用的几种图片格式是可以的,但是有时候行动伴随着明确的方向和目的,不可能什么都重写。

阅读全文 »

有了博客丢失的经验,这次肯定要准备好备份。

参考了多种其他的方式。我选择 在github的私有仓库中备份hexo源文件

思路也很简单,直接在hexo博客源文件目录git init新建一个仓库。让然后上传到自己的私有仓库里,没吃更新备份需要想私有仓库推送内容就行了

第一篇博客

换了电脑,原来的博客什么的都没了,又没备份只好删了重新开一档。

原来的github博客,不得不说,还是写了写了些有用的东西的,至少有一篇博客的代码,我就时常打开来拷贝用。至少,一次劳动的成果省了未来的精力和时间。这是我第一次肯定博客,对我自己还是有点用的。

只是希望自己重开新档后,少挖点坑。

新的一年,谢谢我自己,也悄悄的希望家人朋友都开心。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment