今天想把一个以前小时候玩过的游戏用UE4作成3D的,发现这个游戏每一个地图是16X14的地图块组成的,因为自已不想一张地图一张地图的去照着以前的地图拼出所有的地图数据,作为一名程序员,我觉得我应该使用自已的方法。下边是原始地图图片:



 

像这样的地图一共有56张之多,一张一张的去查看每个图块都在什么坐标上这是一件非常通苦和耗费精力的事情,而且效率也并不一定高,本着程序员处理问题的细路,我打算使用非常牛B的图形处理库OpenCV来对这个地图图片进行分析,以便找出每个图块所在坐标。


当然了,首要任务是要先在我的电脑上装上opencv库再说,因为我已经有两年时间没有使用过windows系统了,更何况作为开发者,使用linux系统也会觉得比windows系统好用。如果使用linux系统,我就使用ubuntu,但我现在只有一个mac os系统的电脑,所以 我打算使用xcode作为开发环境,在网上找到了下边的配置方法 :



1、下载并安装macport或homebrew

2、使用macport/homebrew下载opencv并更新macport,如下:

     sudo port install opencv
     sudo port selfupdate
    

3、新建一个Xcode工程, 并选择Command Line Tool

4. 新建完工程后,在左侧边栏选中项目,在右侧搜索“Header Search Path”,并将其设置为/opt/local/include/opencv。(或是头文件所在的目录,自己查找就可以)

5. 右键单击左侧边栏中的项目,并选择“New Group”,起个名字,比如“OpenCV_Group”。右键单击新建的Group,选择“Add Files to ...(Group名称)”。在弹出窗口里去目录/opt/local/lib/中,选择以"libopencv"开头的.dylib文件,不用选择“Copy Items”。(也可以手动拖地)

6. 在你需要用OpenCV的.h或者.cpp中,加入#include "opencv2/opencv.hpp"。这样添加的是新的用C++编写的opencv。强烈建议使用新的C++风格的OpenCV,内存管理会容易得多。

我使用的是homebrew安装的opencv库版本是:opencv-2.4.9,我的opencv的安装目录不在/opt/local/中,而是在/usr/local/include和/usr/local/lib中。当然了这两个路径下的有关opencv目录的真实路径是在brewhome的库路径的。




 

    接下来我要开始学着使用OpenCV处理图片了。今天就先写到这里,要开始干活了。

接着写:

在创建好opencv项目,写了一个测试cpp,但在编译的连接的时候出了问题,一个是opencv库不支持libc++编译器,要使用libstdc++.这个改过来之后,又有一个C++11的map库找不到的问题。反正是问题多多。最后是因为没有加入库文件的原因。已经解决。

最新版opencv-3.0.0的mac os安装方法:

​http://hugofeng.info/2014/04/17/Compile%20OpenCV3.0%20on%20OSX/​

在打算使用Objective-C与C++混合编程的时候又出现了新的问题。


由于源码使用是c\c++与oc混编导致Unknown type name 'NSString'


将Build Settings中的Apple LLVM 6.1 - Language中的Compile Sources As 改为 Objective-C++问题就解决了。


关于xcocde中资源文件的读取,可以看下边:


​http://blog.sina.com.cn/s/blog_45e2b66c01011fki.html​


接着之前的文章写--

经过一天时间的尝试,已经可以读到图片的每一个像素值了,接下来,我只要把不同图块的图片取出来,再使用像素值模糊对比的方法,就可以得到所有地图图块所在的坐标。

下边是读取每一个像素值的代码:






从上图可以看出,图片大小是843X1162像素。这里只读了最上边的五个像素值。然后打photoshop对比了一下,读取的像素值时原点是在左上角,




很明显,第三个像素值是65 75 86 255,分别对应R,G,B,A(也就是,红,绿,兰,透明度的值),从上边程序读取的数据可以看出来,opencv中的Mat数据里的像素值是按兰,绿,红,透明度、这样的排列顺序。


今天就到这里,去吃饭了,明天接着弄。