你好,谢谢你,至少要帮助我。
首先,我需要加载图像然后遍历该图像的所有像素并检查每个像素的颜色。
我从未尝试过乱搞图像或诸如此类的东西。
非常感谢任何帮助。
谢谢。
答案 0 :(得分:1)
从更大的角度来看,计算骰子上的点数,我会考虑使用ImageMagick - 来自here的名为Magick++
的C ++绑定
我会考虑使用" Blob Analysis" 或" Connected Component Analysis" 来计算点数骰子。
使用这个骰子......
如果我在命令行使用ImageMagick:
convert dice.png -colorspace gray -threshold 50% \
-define connected-components:verbose=true \
-define connected-components:area-threshold=10 \
-connected-components 8 -auto-level output.png
<强>输出强>
Objects (id: bounding-box centroid area mean-color):
0: 380x362+0+0 189.6,180.0 103867 srgba(255,255,255,1)
2: 93x92+248+32 293.8,77.5 6743 srgba(0,0,0,1)
4: 92x93+39+241 84.8,286.7 6741 srgba(0,0,0,1)
5: 93x93+248+241 293.8,286.8 6738 srgba(0,0,0,1)
1: 92x92+39+32 84.8,77.5 6736 srgba(0,0,0,1)
3: 93x93+143+136 189.3,182.1 6735 srgba(0,0,0,1)
你可以看到它找到了5个点(第一个实际上是整个白色图像),我可以在每个点周围放一个红色的盒子,这样你就可以看到它找到了什么:
convert dice.png -stroke red -fill none -strokewidth 1 -draw "rectangle 248,32 341,124" -draw "rectangle 39,241 131,334" -draw "rectangle 248,241 341,334" -draw "rectangle 39,32 131,124" -draw "rectangle 143,136 236,229" result.png
答案 1 :(得分:0)
我认为你可能会使用OpenCV图像处理库。您有一个详细的安装VS2013的手册: OpenCV installation for Visual Studio 2013
安装后。您将获得许多图像处理功能,包括您正在寻找的功能。
例如:
Mat inputImage = imread(filename, CV_LOAD_IMAGE_COLOR);
答案 2 :(得分:0)
您可以使用的方法之一是将文件解释为二进制文件。如果你知道如何解释标题部分并知道图像具有什么颜色深度(标题有这样的信息),那么它不会只是比较二进制或十六进制颜色代码 - 可能是十六进制的,因为C ++没有内置的二进制文件变量
如果您认为自己无法处理二进制文件并需要使用库,请参阅 How do I read JPEG and PNG pixels in C++ on Linux?
编辑 - 或者只使用任何图像处理库,例如http://cimg.eu,因为目标似乎是对图像中骰子的解释。