若该文为原创文章,未经允许不得转载 上一篇:《OpenCV开发笔记(五十六):红胖子8分钟带你深入了解多种图形拟合逼近轮廓(图文并茂+浅显易懂+程序源码)》 红胖子,来也 ! 参考博文《OpenCV开发笔记(四十七):红胖子8分钟带你深入了解直方图(图文并茂+浅显易懂+程序源码)》 反向投影是计算像素和直方图模型中像素吻合度的一种方法。 HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV颜色空间可以用一个圆锥空间模型来描述。 对应版本号v1.51.0
上一篇:《OpenCV开发笔记(五十六):红胖子8分钟带你深入了解多种图形拟合逼近轮廓(图文并茂+浅显易懂+程序源码)》
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106200662
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)OpenCV开发专栏(点击传送门)
下一篇:持续补充中…
前言
做了部分人脸识别后,又回到直方图相关的研究-直方图方向投影。
Demo
直方图
直方图反向投影
概述
通俗来说,就是用已知一个对象的直方图模型去目标图像中寻找是否有相似的对象。例如,如果有肤色的直方图,可以使用反向投影来在图像中寻找肤色区域。
有一点需要注意,反向投影中一般使用HSV色彩空间,使用HS两个通道直方图模型去进行匹配计算。关于HSV颜色空间
反向投影原理
计算反向投影函数原型
/** @overload */ void calcBackProject( const Mat* images, int nimages, const int* channels, const SparseMat& hist, OutputArray backProject, const float** ranges, double scale = 1, bool uniform = true ); /** @overload */ void calcBackProject( InputArrayOfArrays images, const std::vector<int>& channels, InputArray hist, OutputArray dst, const std::vector<float>& ranges, double scale ); void calcBackProject( const Mat* images, int nimages, const int* channels, InputArray hist, OutputArray backProject, const float** ranges, double scale = 1, bool uniform = true );
Demo源码
void OpenCVManager::testCalcBackProject() { QString fileName1 = "E:/qtProject/openCVDemo/openCVDemo/modules/openCVManager/images/19.jpg"; cv::Mat srcMat = cv::imread(fileName1.toStdString()); cv::Mat dstMat; int width = 400; int height = 300; cv::resize(srcMat, srcMat, cv::Size(width, height)); cv::String windowName = _windowTitle.toStdString(); cvui::init(windowName); cv::Mat windowMat = cv::Mat(cv::Size(srcMat.cols * 2, srcMat.rows * 2), srcMat.type()); cv::Mat allMat = cv::Mat(srcMat.rows, srcMat.cols, srcMat.type()); allMat = cv::Scalar(0, 0, 0); int bins = 255; while(true) { // 刷新全图黑色 windowMat = cv::Scalar(0, 0, 0); // 原图复制 cv::Mat mat = windowMat(cv::Range(srcMat.rows * 0, srcMat.rows * 1), cv::Range(srcMat.cols * 0, srcMat.cols * 1)); cv::addWeighted(mat, 0.0f, srcMat, 1.0f, 0.0f, mat); { // 步骤一:先将已知的图片进行颜色空间转换为HSV颜色空间; cv::Mat hsvMat; cv::cvtColor(srcMat, hsvMat, cv::COLOR_BGR2HSV); // 步骤二:对H和S通道进行分离,计算H上的直方图; cv::Mat hueMat; hueMat.create(hsvMat.size(), hsvMat.depth()); int channel[] = {0, 0}; cv::mixChannels(&hsvMat, 1, &hueMat, 1, channel, 1); // 步骤三:计算直方图空间上的最大值,并进行归一化绘制响应的直方图信息; // 调整bins值2~255 cvui::printf(windowMat, 75 + width * 1, 20 + height * 0, "thresh"); cvui::trackbar(windowMat, 75 + width * 1, 40 + height * 0, 165, &bins, 2, 255); cv::MatND hueHistMat; int histSize = MAX(bins, 2); float hueRange[] = {0, 180}; const float *ranges = {hueRange}; cv::calcHist(&hueMat, 1, 0, cv::Mat(), hueHistMat, 1, &histSize, &ranges, true, false); cv::normalize(hueHistMat, hueHistMat, 0, 255, cv::NORM_MINMAX, -1, cv::Mat()); // 步骤四:计算反向投影图像 cv::MatND backprojectMat; cv::calcBackProject(&hueMat, 1, 0, hueHistMat, backprojectMat, &ranges, 1, true); // copy显示 mat = windowMat(cv::Range(srcMat.rows * 1, srcMat.rows * 2), cv::Range(srcMat.cols * 0, srcMat.cols * 1)); cv::cvtColor(backprojectMat, dstMat, cv::COLOR_GRAY2BGR); cv::addWeighted(mat, 0.0f, dstMat, 1.0f, 0.0f, mat); // 对直方图进行均衡化 mat = windowMat(cv::Range(srcMat.rows * 1, srcMat.rows * 2), cv::Range(srcMat.cols * 1, srcMat.cols * 2)); cv::equalizeHist(backprojectMat, dstMat); cv::cvtColor(dstMat, dstMat, cv::COLOR_GRAY2BGR); cv::addWeighted(mat, 0.0f, dstMat, 1.0f, 0.0f, mat); } // 更新 cvui::update(); // 显示 cv::imshow(windowName, windowMat); // esc键退出 if(cv::waitKey(25) == 27) { break; } } }
工程模板:对应版本号v1.51.0
下一篇:持续补充中…
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106200662
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算