存档

文章标签 ‘OPENCV’
1月
11

卫星云图定风向——光流法

前言

好吧,我是强迫症发作来刷出在感的,因为我发现当年写博文的时候,乱开Categories,导致现在博客很多Categories下只有一篇博文,强迫症患者表示,必须至少两篇,所以我最近就来慢慢填这些坑好了。。所以今天填的是第一个坑——计算机视觉。。。【好吧,其实我不搞DIP很久了。。。

作为一个从大四毕设开始就基本没研究过图像处理的人来说,要写一篇算法的科普文,虽然不是不可以,但是你会发现和网上很多人写的差不多【好吧,一般都是别人写的比我好。。】,所以我就决定写一篇关于去年(好吧,前年)研究生数模比赛的某道题的博文好了【一直觉得那道题很适合拿来水一篇博文。。】;

当年赛题发下来时,要做的第一件事自然就是选题,我把几道题都瞄了一下,然后基本马上下定了“嗯,就做这道题吧!!”的决心;因为那道题其中最核心的一问我已经有十足的信心可以“秒杀”了!!

那道题目的大概意思我也就不说了,我说说那核心的一问吧,假如你有以下三幅卫星云图(为了让大家看的比较清楚区别,我将其转为gif了),然后你就需要估算出各个地方的风速和风向【也叫风矢场或者云导风】;
阅读全文…

1月
07

自动扫雷机

其实这篇东西是2012年8月写的。。

之前咧,我在写这篇“死兔”作弊器的时候,后面就提到要写一个自动扫雷机,然后花了两个下午研究了一下,嗯,基本完成了,至少可以称之为内核了。。

先说结果吧,初级和中级都可以在1s内完成游戏,高级经过多次测试,最快4秒,最慢6秒左右。

然后汇报一下功能,嘛,就自动扫雷呗,可以在游戏开始的时候自动识别总雷数,游戏的规模大小,然后没啥别的特点了。。【下面视频可以改画质。。 阅读全文…

7月
16

粒子群优化(Particle Swarm Optimization, PSO)

今天突然开始发闲了,因为老板好像出差了,然后今天下午原计划是去另一个校区搞一些比较重要的事情的,但是我问那边老师下午在么?他在1点50分才回我短信说。。。2点之前他会在的。。。然后下午突然就觉得好空虚,没事干了。。

好吧,所以,今天继续上来补一篇比较简单的算法文吧,应该没什么人会看不懂的吧。。。估计。。。

RT所示,叫做粒子群优化,因为我一直管叫PSO,中文名在我脑海中的印象一直是“粒子XX算法”,我今天才突然意识到,原来有优化这两个字的,然后我就在想,这个叫做“优化”的算法都那么简单了,那么那个叫做“粒子算法”的东西是有多简单啊。。。然后查了一下,好吧,没有“粒子算法”这么一说,或者说,“粒子算法”就是“粒子群优化算法”本身。。。

可能有人听过蚁群算法,觉得粒子群算法会不会跟蚁群算法差不多,其实。。不是差得多不多的问题,完全就是两个东西,生态一点的说法,蚁群算法是模拟蚂蚁找回家的路这种最优路径问题,但是粒子群模拟的是鸟类找最适合栖息地的过程,虽说都是找最优解的问题,但是你敢说鸟类的做法可以放到蚂蚁身上?算了,过阵子我有空就再搞一篇蚁群算法的吧。。。这里姑且先开这个坑。。。 阅读全文…

11月
25

(怀旧向)第六弹:水题一道

好久没写怀旧向的水文了。

好吧,其实这个是以前看到的一道题目,当时纯属吃饱了撑着没事干,所以就。。。写程序来做题。。。虽然题目的意思应该是让你自己思考的。。。

好,题目如下:

比如说如下图所示,你要找到一条路径,从左下角移动到右上角,而且路径不能经过相同的小格子,而且,必须经过所有2×3的灰色大方块中的其中两个
那么,请解决以下这个题目:

阅读全文…

分类: OPENCV 标签: , ,
8月
11

【死兔】游戏作弊器

今日玩了一个叫做《死兔》的国产游戏。创意嘛,其实还一般,就是变化版的扫雷游戏。

规则大概是这样的,在一个方格布局的地图中,你需要从你开始的那个起始点那里,找到一条路到达指定的唯一终点,路上会经过一些有数字标记的格子,这些数字的意义就是说这个格子上下左右四个位置中安全区域有多少个(看嘛,就是变化版的扫雷嘛。。),然后你需要用逻辑推理来找到那条路。如果单单是这样就没什么难得了,但是随着剧情的发展,你可以控制四只兔子,每个兔子在寻找地图的出口的时候都拥有各自的能力,一只可以标记做过的安全路,一个可以在危险的路上做记号(这两个没什么,只要记忆力足够好,就和没用差不多了,虽然实际上会很有用。。),另外两只一直可以瞬移,一直可以通过一小段危险区域。以上,规则!!


阅读全文…

8月
09

Opencv从图像生成视频

opencv中的结构体cvCreateVideoWriter支持视频写操作,它的定义如下:

CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );

filename 输出视频文件名
fourcc为 四个字符用来表示压缩帧的codec 例如:
  • CV_FOURCC(‘P’,’I’,’M’,’1′) = MPEG-1 codec
  • CV_FOURCC(‘M’,’J’,’P’,’G’) = motion-jpeg codec
  • CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
  • CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
  • CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec
  • CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
  • CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
  • CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec
  • 若为 -1,则运行时会弹出一个编码器选择框
fps 被创建视频流的帧率。
frame_size 视频流的大小。
is_color 非零则为彩色编码,否则输出为灰色帧

示例代码及其注释如下: 阅读全文…

分类: OPENCV 标签:
8月
02

OPENCV笔记

滑动条:
cvCreateTrackbar(滑动条名字,窗口名, 起始位置, 最大值, 回调函数);
cvSetTrackbarPos(滑动条名字,窗口名,pos);
回调函数:void F(int h)

=================================================
ROI:

void cvSetImageROI(IplImage* image, CvRect rect); 
void cvResetImageROI(IplImage* image); 
vRect cvGetImageROI(const IplImage* image);

=================================================

颜色转换:

cvCvtColor(src,dst,code);
code = CV_<X>2<Y>
<X>/<Y> = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
e.g.: CV_BGR2GRAY, CV_BGR2HSV, CV_BGR2Lab

=================================================

摄像头:

CvCapture* XXX = 0; 

XXX = cvCaptureFromCAM(0); 

frame = cvQueryFrame(xxx);

================================================= 阅读全文…

分类: OPENCV 标签: ,
7月
29

获取指定窗口图像API

 我们本科宿舍里几个人一直觉得大学学了这么久好像也没能作出些什么好玩的来,当年还曾经豪言约要改造宿舍,弄成学电子的人才会住的宿舍,比如在床边弄个控制器,有人敲门不想走过去开门时按个键就可以了,然而,这么久过去了,一直属于无所为的状态。

因为不想搞什么太专业的,但是又要好玩儿的。。。然后,大四开学两个多月后,我们宿舍所有人保研的保研,工作的工作,全部都找到归属了,人生一时间没什么可以奋斗的理由了,所以。。。沉迷到。。。。水果忍者。。。里面去了,整天切水果,一人一局决胜负,哈,那是真狂热哈。。之后某次吃饭的时候我突然想到,要 阅读全文…

分类: OPENCV 标签: , , ,