900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > OpenCV后投影 利用阈值函数分割指定区域生成掩膜 通过直方图分布查找其他图像相同区域。

OpenCV后投影 利用阈值函数分割指定区域生成掩膜 通过直方图分布查找其他图像相同区域。

时间:2018-09-28 20:24:35

相关推荐

OpenCV后投影 利用阈值函数分割指定区域生成掩膜 通过直方图分布查找其他图像相同区域。

一、API函数

void mixChannels(const Mat* src,int nsrc,Mat* dst ,int ndst,const int* fromTo,size_t npairs);1、**&hsv:**要从中复制通道的源数组2、1:源数组的数量3、**&hue:**复制的频道的目标数组4、1:目标数组的数量5、ch [] = {0,0}:指示通道如何复制的索引对数组。在这种情况下,&hsv的Hue(0)通道正被复制到0通道的6、&Hue(1通道),7、1:索引对数

void cv::calcBackProject (const Mat * images, int nimages,const int * channels,InputArray hist,OutputArray backProject,const float ** ranges, double scale = 1,bool uniform = true)1、const Mat* images:输入图像,图像深度必须位CV_8U,CV_16U或CV_32F中的一种,尺寸相同,每一幅图像都可以有任意的通道数 2、int nimages:输入图像的数量 3、const int* channels:用于计算反向投影的通道列表,通道数必须与直方图维度相匹配4、InputArray hist:输入的直方图,直方图的bin可以是密集(dense)或稀疏(sparse) 5、OutputArray backProject:目标反向投影输出图像,是一个单通道图像,与原图像有相同的尺寸和深度 6、const float ranges**:直方图中每个维度bin的取值范围 7、double scale=1:可选输出反向投影的比例因子

二、程序

#include "opencv2/imgproc.hpp"#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui.hpp"#include <iostream>using namespace cv;using namespace std;int main(int, char** argv){Mat src;//利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域Mat src1 = imread("2.png");imshow("原图", src1);threshold(src1, src, 235, 255, 4);Mat hsv, h,hist,back;if (src.empty()){cout << "未输入图像" << endl;return -1;}cvtColor(src, hsv, COLOR_BGR2HSV);//分离H通道h.create(hsv.size(), hsv.depth());int ch[] = { 0, 0 };mixChannels(&hsv, 1, &h, 1, ch, 1);//等价于split函数/* vector<Mat>mv;split(hsv, mv);h = mv[0];*/Mat dst, dh, dhsv;flip(src1, dst, -1);imshow("实验图", dst);cvtColor(dst, dhsv, COLOR_BGR2HSV);//分离H通道dh.create(dhsv.size(), dhsv.depth());int ch1[] = { 0, 0 };mixChannels(&dhsv, 1, &dh, 1, ch1, 1);int histSize = 8;float hue_range[] = { 0, 180 };const float* ranges = { hue_range };calcHist(&h, 1, 0, Mat(), hist, 1, &histSize, &ranges, true, false);normalize(hist, hist, 0, 255, NORM_MINMAX, -1);calcBackProject(&dh, 1, 0, hist, back, &ranges, 1, true);imshow("back", back);waitKey(0);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。