我们正在尝试使用C ++和OpenCV制作名为PaperSoccer的游戏。 原始板看起来像这样:original board
一举一动的图片看起来像这样:photo
我们正在使用透视变换来移除第二张图片中的透视图,并且我们能够找到点(点)的坐标。 Source code
我们要检测移动的位置并将其移动到原始板上。
我们尝试使用absdiff(img1,img2,result)
来找到木板和照片之间的区别,然后使用
`int DetectLines(Mat src,const char * sourceName,const char * destName){
Mat dst, cdst;
Mat zapisz;
zapisz = imread("plansza3.jpg",0);
Canny(src, dst, 50, 200, 3);
cvtColor(dst, cdst, COLOR_GRAY2BGR);
vector<Vec4i> lines;
HoughLinesP(dst, lines, 1, CV_PI / 180, 20, 10, 5);
for (size_t i = 0; i < 1; i++)
{
Vec4i l = lines[i];
line(zapisz, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0, 0, 255), 3, 2);
}
imshow(destName, zapisz);
return 0;
}`查找线条并将其绘制在板上,但是它不起作用。
最重要的是,为了游戏的逻辑,我们需要直线(移动)的坐标,即两个点。我们不必将其转移到原始板上,但是我们必须以某种方式传达图片中的中心点对应于原始板上的中心点等。
请帮助我们,这是生死攸关的问题;)