OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。
生活随笔
收集整理的這篇文章主要介紹了
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;
}
?
?
總結
以上是生活随笔為你收集整理的OpenCV后投影,利用阈值函数分割指定区域生成掩膜,通过直方图分布查找其他图像相同区域。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BGR图像与HSV图像互相转换(open
- 下一篇: 在图像中查找轮廓