计算机系统应用教程网站

网站首页 > 技术文章 正文

基于opencv图像识别的AI五子棋系列1—棋盘预处理

btikc 2024-09-30 13:13:19 技术文章 16 ℃ 0 评论

今天开始给大家分享一个基于图像识别的AI五子棋项目,基于c语言开发,使用了opencv图像识别库,sdk使用vs2015。该文章是该系列的第一篇文章。通过该系列文章,你可以进阶opencv图像识别,熟悉图像识别与处理的大致流程,熟悉AI智能......


在开始第一章节前,先做一个整体的预览,代码思路以及每个过程的效果图:


有了整体思路的了解,我们进入今天正题,先进行图像的预处理,方便检测棋盘轮廓。

效果图

首先读取原图

Mat srcImage0 = imread("1.jpg");//读取图片 

灰度化

	cvtColor(srcImage0, srcImage1, CV_BGR2GRAY);

二值化

srcImage = srcImage1 > 150; // 二值化

经过上述三个步骤处理,我们基本完成了图像的预处理。下面放一下效果图:




源码

/*****************************************************************************************

1、五子棋棋盘棋子识别检测——灰度化,二值化

*****************************************************************************************/

#include<opencv2/opencv.hpp>

#include <iostream> 

#include <fstream>  

#include <stdlib.h> //srand()和rand()函数 

#include <time.h> //time()函数 

#include <opencv2/core/core.hpp> 

#include <opencv2/highgui/highgui.hpp> 

#include <opencv2/imgproc/imgproc.hpp>  

#include <opencv2/objdetect/objdetect.hpp> 

#include <opencv2/ml/ml.hpp>  

#include<opencv2\opencv.hpp>

#include <opencv2\imgproc\types_c.h>

#include<windows.h>

using namespace std;

using namespace cv;

using namespace ml;

int main()

{

	float ret = 0;

	Mat srcImage0 = imread("1.jpg");//读取图片 

									//Mat srcImage0 = imread("app/1.jpg");//读取图片 

	if (srcImage0.empty())

	{

		cout << " 待预测图像不存在: " << endl;

		printf("[ALG ERROR][函数:%s][行号:%d],图片未正常读取,请检查输入路径十分正确 \n", __FUNCTION__, __LINE__, 1);

		cout << " 待预测图像不存在: " << endl;

	}

	Mat srcImage,srcImage1;

	resize(srcImage0, srcImage0, Size(1920, 1080));

	cvtColor(srcImage0, srcImage1, CV_BGR2GRAY);

	namedWindow("灰度化", 0);

	imshow("灰度化", srcImage1);

	waitKey(2);

	srcImage = srcImage1 > 150; // 二值化

	namedWindow("二值化", 0);

	imshow("二值化", srcImage);

	waitKey(2);

	waitKey(0);

	return 0;

}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表