c++ opencv使用drawKeypoints、line实现特征点的连线显示

前言

图像经过算子处理后得到若干特征点,使用opencv进行渲染显示出这些特征点并且连线,更直观的对比处理前后的一些差异性

demo核心代码

//画出特征点并连线
void drawFilterLinePoints(cv::Mat& srcMat, cv::Point2f pointStart, cv::Point2f pointEnd, cv::Scalar color)
{
	std::vector<cv::KeyPoint> keypoints;
	keypoints.push_back({ pointStart, 0 });
	keypoints.push_back({ pointEnd, 0 });
	cv::drawKeypoints(srcMat, keypoints, srcMat, color);
	cv::line(srcMat, pointStart, pointEnd, color, 1, cv::LINE_AA);
}

//在QLabel中显示此处使用Qt方法对多个图片进行拼接,也可使用opencv拼接
QImage mergeImgHorizonal(std::vector<QImage>& images)
{
	int image_width = 0;
	int max_height = 0;
	std::vector<QImage>::iterator it;
	for (it = images.begin(); it != images.end(); ++it) {
		int width = (*it).width();
		image_width += width;
		if ((*it).height() > max_height) {
			max_height = (*it).height();
		}
	}
	QImage Roi_H(image_width, max_height, QImage::Format_RGB888);
	Roi_H.fill(Qt::black);
	QPainter painter;
	painter.begin(&Roi_H);
	int x_pos = 0;
	for (it = images.begin(); it != images.end(); ++it) {
		painter.drawImage(x_pos, 0, (*it));
		x_pos += (*it).width();
	}
	painter.end();
	return Roi_H;
}

效果展示

作者:费码程序猿
欢迎技术交流:QQ:255895056
转载请注明出处,如有不当欢迎指正

你可能感兴趣的:(opencv笔记,c++,opencv,drawKeypoints,qt)