コンピュータービジョンコースの主要な割り当て:1次元コード検出

一次元コード検出

解説

1次元コード検出(非認識)は、大規模なコンピュータービジョンコースの宿題を研究するために使用される単純なデジタル画像処理方法によって実現されます
評価:干渉防止能力が低すぎる

コード

int main()
{
	Mat dividedLinearStrength(Mat src);
	//1、读图
	Mat src = imread("E:/opencv project/homework/week1/data/20.png");
	//2、将彩图转化为灰度图
	Mat src_gray;
	cvtColor(src, src_gray, CV_RGB2GRAY);
	//中值滤波
	Mat src_zhongzhi;
	medianBlur(src_gray, src_zhongzhi, 5);
	//3、高斯滤波
	Mat src_gaosi;
	GaussianBlur(src_zhongzhi, src_gaosi, Size(5, 5), 0);
	//线性拉伸:增强二维码对比度,忽略背景对比度明显区域
	Mat src_lashen;
	src_lashen = dividedLinearStrength(src_gaosi);
	//4、形态学梯度运算(scharr)
	Mat src_X, src_Y, src_scharr;
	Scharr(src_lashen, src_X, CV_32F, 1, 0);
	Scharr(src_lashen, src_Y, CV_32F, 0, 1);
	subtract(src_X, src_Y, src_scharr);
	//转为8位
	convertScaleAbs(src_scharr, src_scharr);
	//5、模糊化(均值滤波)
	Mat src_mean;
	blur(src_scharr, src_mean, Size(3, 3));
	//6、二值化处理
	Mat src_erzhi;
	threshold(src_mean, src_erzhi, 180, 255, CV_THRESH_BINARY);
	//腐蚀
	erode(src_erzhi, src_erzhi, getStructuringElement(MORPH_RECT, 		Size(5, 5)), Point(-1, -1), 2);
	//7、闭运算填充间隙	
	Mat src_bi;
	Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11));
	morphologyEx(src_erzhi, src_bi, MORPH_CLOSE, kernel);
	//8、腐蚀膨胀(相同次数)
	erode(src_bi, src_bi, getStructuringElement(MORPH_RECT, Size(5, 5)), Point(-1, -1), 4);
	dilate(src_bi, src_bi, getStructuringElement(MORPH_RECT, Size(5, 5)), Point(-1, -1), 4);
	//9、找边界
	vector<vector<Point2i>>contours;
	vector<float>contourArea;
	//接下来对目标轮廓进行查找
	findContours(src_bi, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
	//计算轮廓的面积并且存放
	for (int i = 0; i < contours.size(); i++)
	{
		contourArea.push_back(cv::contourArea(contours[i]));
	}
	double maxValue;
	Point maxLoc;
	minMaxLoc(contourArea, NULL, &maxValue, NULL, &maxLoc);
	//计算面积最大的轮廓的最小的外包矩形
	RotatedRect minRect = minAreaRect(contours[maxLoc.x]);
	Point2f* vertices = new Point2f[4];
	minRect.points(vertices);
	for (int j = 0; j < 4; j++)
	{
		line(src, vertices[j], vertices[(j + 1) % 4], Scalar(0, 255, 255), 3, LINE_AA);
	}
	imshow(("效果"), src);
	waitKey(0);
	return 0;
}

説明する

アップロードにはPPT

元の記事を26件公開しました 賞賛されました0 訪問1206

おすすめ

転載: blog.csdn.net/weixin_44264994/article/details/103801958