日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

泊松融合

發(fā)布時間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 泊松融合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

泊松融合是一種很重要的圖像融合算法,該算法選自論文([Poisson Image Editing]2003年發(fā)表),關(guān)于算法中的很多基礎(chǔ)概念可以參考如下博客:
https://blog.csdn.net/hjimce/article/details/45716603
https://blog.csdn.net/zxpddfg/article/details/75825965
http://eric-yuan.me/poisson-blending/
還有另一個博客,也是自己實現(xiàn)了一遍泊松融合算法,網(wǎng)址如下:
https://blog.csdn.net/dengheCSDN/article/details/77862567
關(guān)于泊松融合的算法,在opencv3.0以上的版本已經(jīng)有接口。下面的代碼沒有用opencv內(nèi)置的接口,是自己完整的實現(xiàn)了一遍該算法,對于我們理解整個算法有很大的幫助。

源圖片src.jpg
背景圖片dst.jpg
掩膜圖片mask.jpg
首先理解什么是圖像融合,圖像融合是把src.jpg+mask.jpg重疊下可以顯示的部分(ROI)融合到dst.jpg中,融合到dst.jpg中時,我們需要為ROI設(shè)計在dst.jpg的坐標,我們設(shè)置為dst.jpg的圖像中心。也就是說,src.jpg+mask.jpg重疊的部分我們要融合到dst.jgp的中心位置。

算法計算步驟:
  • 得到ROI圖片,把ROI圖片重新命名為src.jpg
  • 計算src.jpg的每一個像素點的梯度值,同時也計算dst.jpg的每一個像素點的梯度值,對兩者進行比較,把梯度更高的值存儲在矩陣b中,這樣可以讓融合后的圖像邊緣更平滑。
    (關(guān)于圖像梯度的解釋:https://blog.csdn.net/qq_19764963/article/details/44342389)
  • 構(gòu)建稀疏矩陣A,矩陣A每行有5個非零元素,五個元素呈現(xiàn)這個樣子(..1..1..-4..1..1..),其中每個元素分別對應(yīng)A的該行對應(yīng)的像素點的四個相鄰像素和本身像素。類似求卷積。
  • 最后solve()函數(shù)中,利用高斯賽德爾方法,計算得出融合后的圖像x,
  • 把x中每個像素點分別替換到dst.jpg的相應(yīng)位置中,即可得到融合后的結(jié)果。**
  • 我們要理解圖像中矩陣相乘的概念,
    稀疏矩陣A的行數(shù)和列數(shù)都等于 (ROI.rows*ROI.cols),也就是說如果要融合的區(qū)域是100*100像素的,矩陣A的行為10000,列也為10000
    整個公式為 A*x = b,其中x為最終融合的圖像;b為我們對每個像素點計算出的散度,也就是卷積的結(jié)果,b也是一個矩陣,b的行數(shù)為10000,列數(shù)為1;我們也要把ROI區(qū)域的圖像變?yōu)?0000*1的矩陣,也就是x,如果ROI區(qū)域是彩色的,我們就要分別計算R,G,B對應(yīng)的三個矩陣;如果是灰色的,我們就只需要計算一個矩陣,最后把x貼到dst.jpg中就完成融合。
    該公式大體上為,我們對每一個像素計算出該位置的散度b,然后手動的構(gòu)建稀疏矩陣A,最后反向計算出圖像x,x即為最終結(jié)果。

    /* 代碼選自:http://blog.csdn.net/zxpddfg/article/details/75825965 CSDN博客 泊松圖像融合算法C++實現(xiàn) opencv版本:2.4.9代碼最重要的是 1.建立稀疏矩陣類class SparseMat 2.計算融合圖像時用到的稀疏矩陣SparseMat A、融合后的圖像散度矩陣 b 3.依據(jù)A,b得到融合后的圖像x 所以最重要的兩個函數(shù)為 void getEquation() void solve()算法流程: 1.計算稀疏矩陣A 2.計算散度矩陣b 3.初始化融合圖像x,初始化只是簡單的把源圖像復(fù)制到目的圖像的ROI區(qū)域 4.依據(jù)A,b得到最終的x */ #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <vector> #include <iostream> using namespace std;struct IndexedValue {IndexedValue() : index(-1), value(0) {}IndexedValue(int index_, double value_) : index(index_), value(value_) {}int index;double value; };struct SparseMat {SparseMat() : rows(0), maxCols(0) {}SparseMat(int rows_, int cols_) :rows(0), maxCols(0){create(rows_, cols_);}void create(int rows_, int cols_){CV_Assert(rows_ > 0 && cols_ > 0);rows = rows_;maxCols = cols_;buf.resize(rows * maxCols);data = &buf[0];memset(data, -1, rows * maxCols * sizeof(IndexedValue));count.resize(rows);memset(&count[0], 0, rows * sizeof(int));}void release(){rows = 0;maxCols = 0;buf.clear();count.clear();data = 0;}/*獲取第row行的行指針*/const IndexedValue* rowPtr(int row) const{CV_Assert(row >= 0 && row < rows);return data + row * maxCols;}IndexedValue* rowPtr(int row){CV_Assert(row >= 0 && row < rows);return data + row * maxCols;}/*可以抽象的理解為在(row,col)位置插入value值,但是存儲該值的時候,是從前往后依次存儲的,并且存儲了該值的索引*/void insert(int row, int col, double value){CV_Assert(row >= 0 && row < rows);int currCount = count[row];CV_Assert(currCount < maxCols);IndexedValue* rowData = rowPtr(row);int i = 0;if ((currCount > 0) && (col > rowData[0].index)){for (i = 1; i < currCount; i++){if ((col > rowData[i - 1].index) &&(col < rowData[i].index))break;}}if (i < currCount){for (int j = currCount; j >= i; j--)rowData[j + 1] = rowData[j];}rowData[i] = IndexedValue(col, value);++count[row];}/*可以得到對角線元素(i,i)處于第幾個位置,用vector<int>pos記錄,pos[i]=0,1,2,三個數(shù)字之一*/void calcDiagonalElementsPositions(std::vector<int>& pos) const{pos.resize(rows, -1);for (int i = 0; i < rows; i++){const IndexedValue* ptrRow = rowPtr(i);for (int j = 0; j < count[i]; j++){if (ptrRow[j].index == i){pos[i] = j;break;}}}}int rows, maxCols;std::vector<IndexedValue> buf;std::vector<int> count; /*記錄row行插入的值的個數(shù)*/IndexedValue* data;private:SparseMat(const SparseMat&);SparseMat& operator=(const SparseMat&); };/* 得到融合后的圖像,即圖像重建算法函數(shù) x */ void solve(const IndexedValue* A, const int* length, const int* diagPos,const double* b, double* x, int rows, int cols, int maxIters, double eps) {/*rows為要改變的像素點的個數(shù) 676cols = 8maxIters = 10000eps = 0.01求解矩陣x的算法:Gauss-Sidel*/for (int iter = 0; iter < maxIters; iter++){int count = 0;for (int i = 0; i < rows; i++){double val = 0;const IndexedValue* ptrRow = A + cols * i;for (int j = 0; j < diagPos[i]; j++){val += ptrRow[j].value * x[ptrRow[j].index];}for (int j = diagPos[i] + 1; j < length[i]; j++){val += ptrRow[j].value * x[ptrRow[j].index];}val = b[i] - val;val /= ptrRow[diagPos[i]].value;if (fabs(val - x[i]) < eps)count++;x[i] = val;}if (count == rows){printf("converge iter count = %d, end\n", iter + 1);break;}} }void makeIndex(const cv::Mat& mask, cv::Mat& index, int& numElems) {CV_Assert(mask.data && mask.type() == CV_8UC1);int rows = mask.rows, cols = mask.cols;index.create(rows, cols, CV_32SC1);index.setTo(-1);int count = 0;for (int i = 0; i < rows; i++){const unsigned char* ptrMaskRow = mask.ptr<unsigned char>(i);int* ptrIndexRow = index.ptr<int>(i);for (int j = 0; j < cols; j++){if (ptrMaskRow[j])ptrIndexRow[j] = (count++);}}numElems = count; // 記錄mask圖片中,可改變的像素點的個數(shù) }void draw(const std::vector<cv::Point>& contour, const cv::Size& imageSize,cv::Rect& extendRect, cv::Mat& mask) {cv::Rect contourRect = cv::boundingRect(contour);int left, right, top, bottom;left = contourRect.x;right = contourRect.x + contourRect.width;top = contourRect.y;bottom = contourRect.y + contourRect.height;CV_Assert(left > 0);left--;CV_Assert(right < imageSize.width);right++;CV_Assert(top > 0);top--;CV_Assert(bottom < imageSize.height);bottom++;extendRect.x = left;extendRect.y = top;extendRect.width = right - left;extendRect.height = bottom - top;mask.create(extendRect.height, extendRect.width, CV_8UC1);mask.setTo(0);std::vector<std::vector<cv::Point> > contours(1);contours[0] = contour;cv::drawContours(mask, contours, -1, cv::Scalar(255), -1, 8,cv::noArray(), 0, cv::Point(-left, -top)); }void draw(const std::vector<cv::Point>& contour, cv::Size& size, cv::Mat& mask) {mask.create(size, CV_8UC1);mask.setTo(0);std::vector<std::vector<cv::Point> > contours(1);contours[0] = contour;cv::drawContours(mask, contours, -1, cv::Scalar(255), -1, 8, cv::noArray(), 0); }/* 得到 A 稀疏矩陣 b 融合然后圖像的散度 */ void getEquation(const cv::Mat& src, const cv::Mat& dst,const cv::Mat& mask, const cv::Mat& index, int count,SparseMat& A, cv::Mat& b, cv::Mat& x, bool mixGrad = false) {CV_Assert(src.data && dst.data && mask.data && index.data);CV_Assert((src.type() == CV_8UC1) && (dst.type() == CV_8UC1) &&(mask.type() == CV_8UC1) && (index.type() == CV_32SC1));CV_Assert((src.size() == dst.size()) && (src.size() == mask.size()) &&(src.size() == index.size()));int rows = src.rows, cols = src.cols;A.create(count, 8);b.create(count, 1, CV_64FC1);b.setTo(0);x.create(count, 1, CV_64FC1);x.setTo(0);for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j++){if (mask.at<unsigned char>(i, j)){int currIndex = index.at<int>(i, j);int currSrcVal = src.at<unsigned char>(i, j);int currDstVal = dst.at<unsigned char>(i, j);int neighborCount = 0;int bVal = 0;if (i > 0){neighborCount++;if (mask.at<unsigned char>(i - 1, j)){int topIndex = index.at<int>(i - 1, j);A.insert(currIndex, topIndex, -1);}else{bVal += dst.at<unsigned char>(i - 1, j);}if (mixGrad){int srcGrad = currSrcVal - src.at<unsigned char>(i - 1, j);int dstGrad = currDstVal - dst.at<unsigned char>(i - 1, j);bVal += (abs(srcGrad) > abs(dstGrad) ? srcGrad : dstGrad);}elsebVal += (currSrcVal - src.at<unsigned char>(i - 1, j));}if (i < rows - 1){neighborCount++;if (mask.at<unsigned char>(i + 1, j)){int bottomIndex = index.at<int>(i + 1, j);A.insert(currIndex, bottomIndex, -1);}else{bVal += dst.at<unsigned char>(i + 1, j);}if (mixGrad){int srcGrad = currSrcVal - src.at<unsigned char>(i + 1, j);int dstGrad = currDstVal - dst.at<unsigned char>(i + 1, j);bVal += (abs(srcGrad) > abs(dstGrad) ? srcGrad : dstGrad);}elsebVal += (currSrcVal - src.at<unsigned char>(i + 1, j));}if (j > 0){neighborCount++;if (mask.at<unsigned char>(i, j - 1)){int leftIndex = index.at<int>(i, j - 1);A.insert(currIndex, leftIndex, -1);}else{bVal += dst.at<unsigned char>(i, j - 1);}if (mixGrad){int srcGrad = currSrcVal - src.at<unsigned char>(i, j - 1);int dstGrad = currDstVal - dst.at<unsigned char>(i, j - 1);bVal += (abs(srcGrad) > abs(dstGrad) ? srcGrad : dstGrad);}elsebVal += (currSrcVal - src.at<unsigned char>(i, j - 1));}if (j < cols - 1){neighborCount++;if (mask.at<unsigned char>(i, j + 1)){int rightIndex = index.at<int>(i, j + 1);A.insert(currIndex, rightIndex, -1);}else{bVal += dst.at<unsigned char>(i, j + 1);}if (mixGrad){int srcGrad = currSrcVal - src.at<unsigned char>(i, j + 1);int dstGrad = currDstVal - dst.at<unsigned char>(i, j + 1);bVal += (abs(srcGrad) > abs(dstGrad) ? srcGrad : dstGrad);}elsebVal += (currSrcVal - src.at<unsigned char>(i, j + 1));}A.insert(currIndex, currIndex, neighborCount);b.at<double>(currIndex) = bVal;x.at<double>(currIndex) = currSrcVal;//x.at<double>(currIndex) = dst.at<unsigned char>(i, j);}}}}/* 該函數(shù)把val的像素值復(fù)制到dst中 */ void copy(const cv::Mat& val, const cv::Mat& mask, const cv::Mat& index, cv::Mat& dst) {CV_Assert(val.data && val.type() == CV_64FC1);CV_Assert(mask.data && index.data && dst.data);CV_Assert((mask.type() == CV_8UC1) && (index.type() == CV_32SC1) && (dst.type() == CV_8UC1));CV_Assert((mask.size() == index.size()) && (mask.size() == dst.size()));int rows = mask.rows, cols = mask.cols;for (int i = 0; i < rows; i++){const unsigned char* ptrMaskRow = mask.ptr<unsigned char>(i);const int* ptrIndexRow = index.ptr<int>(i);unsigned char* ptrDstRow = dst.ptr<unsigned char>(i);for (int j = 0; j < cols; j++){if (ptrMaskRow[j]){ptrDstRow[j] = cv::saturate_cast<unsigned char>(val.at<double>(ptrIndexRow[j]));}}} }//得到一個圖片的非零邊界 cv::Rect getNonZeroBoundingRectExtendOnePixel(const cv::Mat& mask) {CV_Assert(mask.data && mask.type() == CV_8UC1);int rows = mask.rows, cols = mask.cols;int top = rows, bottom = -1, left = cols, right = -1;for (int i = 0; i < rows; i++){if (cv::countNonZero(mask.row(i))){top = i;break;}}for (int i = rows - 1; i >= 0; i--){if (cv::countNonZero(mask.row(i))){bottom = i;break;}}for (int i = 0; i < cols; i++){if (cv::countNonZero(mask.col(i))){left = i;break;}}for (int i = cols - 1; i >= 0; i--){if (cv::countNonZero(mask.col(i))){right = i;break;}}CV_Assert(top > 0 && top < rows - 1 &&bottom > 0 && bottom < rows - 1 &&left > 0 && left < cols - 1 &&right > 0 && right < cols - 1);return cv::Rect(left - 1, top - 1, right - left + 3, bottom - top + 3); }/*! The basic Poisson image editing function. Source image, mask image and destination image should have the same size. Source image's content inside the mask's non zero region will be blended into the destination image, using Possion image editing algorithm. \param[in] src Source image, should be of type CV_8UC1 or CV_8UC3. \param[in] mask Source image's mask. Source image's content inside the mask's non zero region will be blended into the destination image. The mask's non zero region should not include the boundaries, i.e., left most and right most columns and top most and bottom most columns, otherwise the result may be incorrect. \param[in,out] dst Destination image, should be the same cv::Mat::type() as the source image. \param[in] mixGrad True to apply mixing gradient operation. */ void PoissonImageEdit(const cv::Mat& src, const cv::Mat& mask, cv::Mat& dst, bool mixGrad = false) {CV_Assert(src.data && mask.data && dst.data);CV_Assert(src.size() == mask.size() && mask.size() == dst.size());CV_Assert(src.type() == CV_8UC1 || src.type() == CV_8UC3);CV_Assert(dst.type() == src.type());CV_Assert(mask.type() == CV_8UC1);cv::Mat index;SparseMat A; // 稀疏矩陣,每行五個非零元素cv::Mat b, x;int numElems; // 將要改變的像素點的個數(shù) makeIndex(mask, index, numElems);if (src.type() == CV_8UC1) // 灰色圖{getEquation(src, dst, mask, index, numElems, A, b, x, mixGrad);std::vector<int> diagPos;A.calcDiagonalElementsPositions(diagPos);solve(A.data, &A.count[0], &diagPos[0], (double*)b.data, (double*)x.data,A.rows, A.maxCols, 10000, 0.01);copy(x, mask, index, dst);}else if (src.type() == CV_8UC3) // 彩色圖{cv::Mat srcROISplit[3], dstROISplit[3];for (int i = 0; i < 3; i++){srcROISplit[i].create(src.size(), CV_8UC1);dstROISplit[i].create(dst.size(), CV_8UC1);}cv::split(src, srcROISplit);cv::split(dst, dstROISplit);for (int i = 0; i < 3; i++){getEquation(srcROISplit[i], dstROISplit[i], mask, index, numElems,A, b, x, mixGrad);std::vector<int> diagPos;A.calcDiagonalElementsPositions(diagPos);solve(A.data, &A.count[0], &diagPos[0], (double*)b.data, (double*)x.data,A.rows, A.maxCols, 10000, 0.01);copy(x, mask, index, dstROISplit[i]);}cv::merge(dstROISplit, 3, dst);} }/*! Overloaded Poisson image editing function. Source image and destination image do not need to have the same size. Source image's content inside the contour will be blended into the destination image, with some magnitude of shifting, using Possion image editing algorithm. \param[in] src Source image, should be of type CV_8UC1 or CV_8UC3. \param[in] srcContour A contour indicating the region of interest in the source image. Pixels inside the region will be blended to the destination image. The region enclosed by the contour should not contain pixels on the border of the source image. \param[in] ofsSrcToDst The offset of the source image's region of interest in the destination image. Pixel (x, y) in the region of interest in the source image will be blended in (x, y) + ofsSrcToDst in the destination image. You should make sure that the destination image's region of interest locates totally inside the destionation image excluding the border pixels. \param[in,out] dst Destination image, should be the same cv::Mat::type() as the source image. \param[in] mixGrad True to apply mixing gradient operation. */ void PoissonImageEdit(const cv::Mat& src, const std::vector<cv::Point>& srcContour,cv::Point ofsSrcToDst, cv::Mat& dst, bool mixGrad = false) {CV_Assert(src.data && (src.type() == CV_8UC1 || src.type() == CV_8UC3));CV_Assert(srcContour.size() >= 3);CV_Assert(dst.data && dst.type() == src.type());cv::Mat mask;cv::Rect srcRect;draw(srcContour, src.size(), srcRect, mask);cv::Mat srcROI = src(srcRect);cv::Mat dstROI = dst(srcRect + ofsSrcToDst);PoissonImageEdit(srcROI, mask, dstROI, mixGrad);return; }/*! Overloaded Poisson image editing function. Source image and source mask imageshould have the same size. Source image's content inside the mask's non zero region will be blended into the destination image, with some magnitude of shifting, using Possion image editing algorithm. \param[in] src Source image, should be of type CV_8UC1 or CV_8UC3. \param[in] srcMask Source image's mask indicating the region of interest in the source image. Pixels inside the region will be blended to the destination image. The region enclosed by the contour should not contain pixels on the border of the source image. \param[in] ofsSrcToDst The offset of the source image's region of interest in the destination image. Pixel (x, y) in the region of interest in the source image will be blended in (x, y) + ofsSrcToDst in the destination image. You should make sure that the destination image's region of interest locates totally inside the destionation image excluding the border pixels. \param[in,out] dst Destination image, should be the same cv::Mat::type() as the source image. \param[in] mixGrad True to apply mixing gradient operation. */ void PoissonImageEdit(const cv::Mat& src, const cv::Mat& srcMask,cv::Point ofsSrcToDst, cv::Mat& dst, bool mixGrad = false) {CV_Assert(src.data && (src.type() == CV_8UC1 || src.type() == CV_8UC3));CV_Assert(srcMask.data && srcMask.type() == CV_8UC1);CV_Assert(dst.data && dst.type() == src.type());cv::Rect srcRect = getNonZeroBoundingRectExtendOnePixel(srcMask);cv::Mat mask = srcMask(srcRect);cv::Mat srcROI = src(srcRect);//cv::Mat dstROI = dst(srcRect + ofsSrcToDst);cv::Mat dstROI = dst(cv::Rect(0, 0, srcRect.width, srcRect.height) + cv::Point(dst.cols / 2 - srcRect.width / 2, dst.rows / 2 - srcRect.height / 2));PoissonImageEdit(srcROI, mask, dstROI, mixGrad);return; }#define GRAY 0 #define ORDER 6 //測試代碼 int main() { #if ORDER == 0{// Images from http://www.ctralie.com/Teaching/PoissonImageEditing/cv::Mat src = cv::imread("GreatWhiteShark.jpg");cv::Mat dst = cv::imread("beach.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifstd::vector<cv::Point> contour(4);contour[0] = cv::Point(380, 300) - cv::Point(320, 230);contour[1] = cv::Point(550, 300) - cv::Point(320, 230);contour[2] = cv::Point(550, 420) - cv::Point(320, 230);contour[3] = cv::Point(380, 420) - cv::Point(320, 230);cv::Point ofsSrcToDst = cv::Point(320, 230);PoissonImageEdit(src, contour, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result0.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 1{// Eye photo and hand photo from // https://en.wikipedia.org/wiki/Gradient-domain_image_processingcv::Mat src = cv::imread("220px-EyePhoto.jpg");cv::Mat dst = cv::imread("1074px-HandPhoto.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifstd::vector<cv::Point> srcContour(4);srcContour[0] = cv::Point(1, 1);srcContour[1] = cv::Point(218, 1);srcContour[2] = cv::Point(218, 130);srcContour[3] = cv::Point(1, 130);cv::Point ofsSrcToDst(570, 300);PoissonImageEdit(src, srcContour, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result1.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 2{// Eye photo from // https://en.wikipedia.org/wiki/Gradient-domain_image_processing// Tree photo from // https://commons.wikimedia.org/wiki/File:Big_Tree_with_Red_Sky_in_the_Winter_Night.jpg?uselang=zh-cncv::Mat src = cv::imread("220px-EyePhoto.jpg");cv::Mat dst = cv::imread("1024px-Big_Tree_with_Red_Sky_in_the_Winter_Night.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifstd::vector<cv::Point> srcContour(4);srcContour[0] = cv::Point(1, 1);srcContour[1] = cv::Point(218, 1);srcContour[2] = cv::Point(218, 130);srcContour[3] = cv::Point(1, 130);cv::Point ofsSrcToDst(570, 300);PoissonImageEdit(src, srcContour, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result2.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 3// following image sources// http://cs.brown.edu/courses/csci1950-g/results/proj2/pdoran/{cv::Mat src = cv::imread("src_img01.jpg");cv::Mat srcMask = cv::imread("mask_img01.jpg", cv::IMREAD_GRAYSCALE);cv::Mat dst = cv::imread("tar_img01.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifcv::Point ofsSrcToDst(200, 200);cv::threshold(srcMask, srcMask, 128, 255, cv::THRESH_BINARY);PoissonImageEdit(src, srcMask, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result3.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 4{cv::Mat src = cv::imread("src_img02.jpg");cv::Mat srcMask = cv::imread("mask_img02.jpg", cv::IMREAD_GRAYSCALE);cv::Mat dst = cv::imread("tar_img02.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifcv::Point ofsSrcToDst(20, 200);cv::threshold(srcMask, srcMask, 128, 255, cv::THRESH_BINARY);PoissonImageEdit(src, srcMask, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result4.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 5{cv::Mat src = cv::imread("src_img03.jpg");cv::Mat srcMask = cv::imread("mask_img03.jpg", cv::IMREAD_GRAYSCALE);cv::Mat dst = cv::imread("tar_img03.jpg"); #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifcv::Point ofsSrcToDst(20, 20);cv::threshold(srcMask, srcMask, 128, 255, cv::THRESH_BINARY);PoissonImageEdit(src, srcMask, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result5.jpg", dst);cv::waitKey(0);} #endif#if ORDER == 6{cv::Mat src = cv::imread("src_img04.jpg");cv::Mat srcMask = cv::imread("mask_img04.jpg", cv::IMREAD_GRAYSCALE);cv::Mat dst = cv::imread("tar_img04.jpg");if (src.empty() || srcMask.empty() || dst.empty()){cout << "read image fail!!" << endl;return -1;} #if GRAYcv::cvtColor(src, src, cv::COLOR_BGR2GRAY);cv::cvtColor(dst, dst, cv::COLOR_BGR2GRAY); #endifcv::Point ofsSrcToDst(20, 20);cv::threshold(srcMask, srcMask, 128, 255, cv::THRESH_BINARY);PoissonImageEdit(src, srcMask, ofsSrcToDst, dst, true);cv::imshow("src", src);cv::imshow("dst", dst);cv::imwrite("result6.jpg", dst);cv::waitKey(0);} #endifreturn 0; }

    總結(jié)

    以上是生活随笔為你收集整理的泊松融合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    久久亚洲人 | 天天色天天上天天操 | 欧美韩国日本在线观看 | 在线观看激情av | 激情综合五月天 | 五月天激情视频 | 亚洲一区二区视频在线播放 | 三级黄免费看 | 婷婷伊人五月 | www.亚洲激情.com | 麻豆va一区二区三区久久浪 | 日韩av影视 | 成人av免费在线 | 久久久在线 | 97视频久久久 | 亚洲精品在线看 | 成人三级网站在线观看 | 欧美a在线看 | 国产精品国产三级国产aⅴ入口 | 国产精品免费不 | 欧美成年网站 | 五月天色中色 | 中文字幕在线影院 | 99爱这里只有精品 | 色久av| 亚洲aaa毛片 | 97色噜噜 | 色视频在线看 | 日韩国产欧美在线播放 | av中文字幕在线免费观看 | 成年人在线看视频 | 精品久久久成人 | 婷婷av网站| 国产精品美女久久久久久 | 久久综合久久88 | 亚洲欧洲精品久久 | 国产专区日韩专区 | 成人av免费在线观看 | 国产青春久久久国产毛片 | 国产黄色特级片 | 九九久久免费视频 | 久久精品中文字幕 | 欧美精品v国产精品v日韩精品 | 午夜av电影院 | 天堂av在线免费观看 | 99久久精品免费看国产一区二区三区 | 九九热精品视频在线观看 | 国产精品久久精品 | 嫩草伊人久久精品少妇av | 99精品99| www免费视频com| 亚洲国产激情 | 91人人视频在线观看 | 天天色婷婷| 99 视频 高清 | 精品伦理一区二区三区 | 国产精品一区二 | 久久久久国产精品www | av电影 一区二区 | 日本中文字幕在线观看 | 在线精品一区二区 | 国产玖玖视频 | 欧美一级片免费播放 | 日韩国产欧美在线播放 | 成 人 黄 色视频免费播放 | 日本中文在线 | 日韩av一区二区三区四区 | 亚洲高清视频在线观看免费 | 久草在线免 | 天天艹| 国产精品久久久久久久久久久久冷 | 爱干视频 | 极品嫩模被强到高潮呻吟91 | 国产高清在线视频 | 国内精品久久久久影院优 | 免费在线观看日韩视频 | 九九九九热精品免费视频点播观看 | 伊人久久国产 | 免费日韩一区二区三区 | 亚洲国产精品500在线观看 | 久草青青在线观看 | 色婷婷激情 | 激情婷婷色 | 婷婷av网站 | 欧美日韩另类视频 | 成人av资源网 | 精品久久一| 制服丝袜一区二区 | 国产黄色片一级三级 | 日日干天天干 | 欧美性久久久久久 | 精品国产乱码久久 | 99精品久久99久久久久 | 成年人电影毛片 | 97视频在线观看免费 | 97国产视频| 亚洲老妇xxxxxx | 久久精品视频网 | 婷婷亚洲最大 | 日韩精品中文字幕在线播放 | 一级欧美一级日韩 | 国产特级毛片aaaaaa高清 | 97av视频在线观看 | 国内久久久 | 国产高清在线a视频大全 | 久久久免费观看完整版 | 免费成人av电影 | 成年美女黄网站色大片免费看 | 精品久久一区二区三区 | 四虎在线视频免费观看 | 亚州av网站大全 | 久操97| 亚洲精品天天 | 国产艹b视频 | 深爱激情久久 | 成人av地址| 婷婷九月激情 | 国产精品一区二区久久精品爱涩 | 中文字幕亚洲在线观看 | 亚洲国产成人精品在线观看 | 日韩毛片在线免费观看 | 黄色99视频| 久草电影免费在线观看 | 人人超碰在线 | 99精品视频免费全部在线 | 一级一级一片免费 | 日韩小视频网站 | 99精品国产高清在线观看 | 久草在线免费资源 | 日日夜精品 | 色资源网免费观看视频 | 国产一区精品在线 | 高清美女视频 | 在线视频一区观看 | 国产亚洲婷婷免费 | 久久精品视频18 | 国产粉嫩在线观看 | 黄免费在线观看 | 国产一区二区在线看 | 一区二区三高清 | 99精品在线免费 | 午夜电影一区 | 人人干97 | 国内三级在线观看 | 久久免费在线视频 | 亚洲精品日韩一区二区电影 | 国产精品综合在线 | 一本一道久久a久久精品蜜桃 | 九九视频这里只有精品 | 99久久精品免费看国产四区 | 黄网站app在线观看免费视频 | 色综合久久久久综合体桃花网 | 一区二区三区电影大全 | 91av电影在线 | 日韩精品一区二区三区高清免费 | 日韩精品久久久久久久电影竹菊 | 中文字幕在线观看视频一区二区三区 | 欧美激情精品一区 | 综合色中色 | 亚洲免费一级 | 午夜在线免费观看 | 国产精品21区 | 国内视频一区二区 | 日韩av中文 | 一色屋精品视频在线观看 | 欧美另类老妇 | 五月婷婷亚洲 | 亚洲电影成人 | 亚洲精品女人 | 啪啪肉肉污av国网站 | av成人免费网站 | 国产精品11 | 久久免费中文视频 | 亚洲黄色成人av | 18岁免费看片| 亚洲精品在线免费看 | 国产情侣一区 | 精品免费 | 午夜精品久久久久久久99 | 亚洲国内精品在线 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 色天天综合久久久久综合片 | 丁香九月婷婷综合 | 成人午夜片av在线看 | 2019av在线视频| 日韩电影中文字幕在线 | 免费不卡中文字幕视频 | 婷婷色五 | a黄色一级片 | 久久综合婷婷国产二区高清 | 精品视频在线视频 | 成年人app网址 | 亚洲日本一区二区在线 | 九九热免费在线视频 | www.亚洲黄| 成人啪啪18免费游戏链接 | 免费日韩 | 日日碰狠狠躁久久躁综合网 | 欧美日韩国产二区 | 播五月婷婷 | 福利视频一区二区 | 亚洲va欧美va | 中国一级片在线播放 | 在线 国产 日韩 | 国产精品视频永久免费播放 | 日韩三级免费 | 久久精品一二三 | 在线看成人| 香蕉在线观看视频 | 香蕉视频在线免费 | 日韩av中文字幕在线免费观看 | 日本精品一区二区三区在线观看 | 国产资源中文字幕 | 国产精品毛片一区视频播 | 久久精品久久精品久久 | 九色在线视频 | 国产精品四虎 | 欧美性护士 | 日韩在线视 | 成人国产网站 | 最近中文字幕国语免费高清6 | 成人a免费 | 一区三区在线欧 | 狠狠色丁香婷婷综合最新地址 | 在线国产高清 | 日韩色高清 | 99精品久久99久久久久 | 国产精成人品免费观看 | 亚洲少妇天堂 | 久久热亚洲 | www.99热精品 | 欧美日韩不卡在线观看 | 在线免费观看的av | 亚洲国产日韩一区 | 国内精品久久久久影院一蜜桃 | 高清一区二区三区 | 人人干在线 | 久久久精品国产一区二区电影四季 | 日韩a级黄色 | 天天操天| 亚洲午夜精品在线观看 | 久久热首页 | 一级性生活片 | 免费日韩电影 | 免费观看国产视频 | 久久黄色免费观看 | 日本久久久久久科技有限公司 | 成人av网址大全 | 99 视频 高清| 一本—道久久a久久精品蜜桃 | 在线观看一区 | 香蕉一区| 欧美日韩99| 久久一区国产 | 五月婷婷激情综合 | 五月激情丁香图片 | 亚洲午夜小视频 | 九九免费在线观看 | 色综合天天综合 | 欧美日韩国产高清视频 | 黄色视屏在线免费观看 | 国产麻豆精品一区 | 国产91粉嫩白浆在线观看 | 久久精品小视频 | 成人一级片在线观看 | 波多野结衣在线视频一区 | 四虎影视久久久 | 久久国产精品小视频 | 久久九九网站 | 日韩在线观看小视频 | 精品99视频| av线上免费看| av中文天堂在线 | 9久久精品| 日韩在线观看高清 | 天天看天天干 | 国产又粗又猛又色又黄网站 | 国产色道| 99精品视频免费全部在线 | 午夜电影一区 | 蜜臀av免费一区二区三区 | 91夫妻视频 | 13日本xxxxxⅹxxx20 | 久久这里只有精品23 | 中文字幕人成乱码在线观看 | 最近字幕在线观看第一季 | 狠狠色丁香久久综合网 | 97人人澡人人爽人人模亚洲 | 永久av免费在线观看 | 狠狠操精品 | 欧美日韩国产色综合一二三四 | 亚洲视频资源在线 | 国产亚洲观看 | 九九有精品 | 狠狠操综合 | 字幕网资源站中文字幕 | 黄污视频网站大全 | 亚洲精品在线国产 | 国产精品一二三 | 99精彩视频在线观看免费 | 日韩高清一二区 | 夜夜夜夜操 | 五月综合色婷婷 | 超碰97在线资源 | 国产一级片一区二区三区 | 五月综合久久 | 精品日韩在线 | 免费在线观看国产精品 | 久久99视频免费 | 亚洲日韩中文字幕 | 成人一区二区三区中文字幕 | 中文字幕在线国产 | 国产精品免费一区二区三区 | 中文字幕一区二区三区在线观看 | 国产69久久 | 亚洲va在线va天堂 | 日日夜夜av | 日本久久精品视频 | 国产精品一区二区三区电影 | 96在线| 亚洲精品小视频 | 国产综合婷婷 | 欧美激情视频一二区 | 国产精品国内免费一区二区三区 | 激情综合亚洲 | 久久久精品久久日韩一区综合 | 超碰在线日韩 | 日日射av | 国产亚洲一区二区在线观看 | 免费在线播放av电影 | 日韩欧美精品在线观看视频 | 欧美久草网 | 中文字幕中文字幕中文字幕 | 亚洲久草在线视频 | 最近日本中文字幕a | 精品中文字幕在线观看 | 97电影手机| 亚洲午夜精品久久久久久久久久久久 | 超级av在线 | 国产xvideos免费视频播放 | 亚洲免费精品一区二区 | 日本99久久 | 国产精品久久久久久久久久久久午夜 | 精品国产一区二区三区久久 | 久久久久久高潮国产精品视 | 成人三级网站在线观看 | 日韩免费看视频 | 日韩av片免费在线观看 | 亚洲另类在线视频 | 黄色免费在线视频 | 永久免费的av电影 | 欧美日韩一区二区三区在线观看视频 | 国产美女在线精品免费观看 | 国产精品久久一区二区三区, | 99久精品 | 日韩欧美69 | 国产一线二线三线性视频 | 日日干天天射 | 四虎影视精品成人 | 精品视频成人 | 国产区精品视频 | 国产看片网站 | 国产乱码精品一区二区三区介绍 | 在线视频 国产 日韩 | 91视频a| 99久久精品国产免费看不卡 | 欧美日韩国产精品爽爽 | 国产在线91精品 | 久久久久久久久国产 | 成片免费观看视频大全 | 久久精品男人的天堂 | 999国产在线 | 亚洲成av人影院 | 五月婷婷一区 | 人人人爽 | 国产黄色看片 | 久久精品一区二区三区视频 | 日韩在线观看视频在线 | 91c网站色版视频 | av黄色国产| 婷婷在线视频 | 99在线精品免费视频九九视 | 狠狠干网 | 国产视频亚洲视频 | a黄色大片| 亚洲高清久久久 | 又黄又爽免费视频 | 欧美一区日韩一区 | 五月婷婷激情网 | 国产91在线播放 | www色com | 97精品国自产拍在线观看 | 免费观看xxxx9999片 | 国产精品区免费视频 | 丁香午夜婷婷 | 国产夫妻自拍av | 在线观看成人毛片 | 欧美亚洲三级 | 视频二区在线 | av一级片网站 | 中文字幕丝袜 | 日日爱网站 | 中文字幕 婷婷 | 黄色h在线观看 | 友田真希x88av| 国产精品久久久久久电影 | 国产韩国精品一区二区三区 | 亚洲精品国产免费 | 国产剧在线观看片 | 六月激情丁香 | 六月色| 久久久久综合网 | 一区二区三区在线免费观看视频 | 日日夜夜天天操 | 中文字幕亚洲精品日韩 | 欧美国产不卡 | 天天天天天天操 | 久久精品直播 | 丰满少妇高潮在线观看 | 在线成人性视频 | 欧洲亚洲国产视频 | 99精品久久久久久久久久综合 | 麻豆系列在线观看 | 伊人久久电影网 | 亚洲狠狠婷婷综合久久久 | 中文字幕在线免费观看视频 | 999视频在线播放 | 亚洲免费不卡 | 久草在线高清视频 | 国产欧美久久久精品影院 | 久久手机在线视频 | 日本中文字幕免费观看 | www..com毛片| 天天干,天天射,天天操,天天摸 | 亚洲精品视频免费观看 | 精品国产综合区久久久久久 | 国产免费影院 | av一级片 | 99热精品久久 | 久久 国产一区 | 在线观看黄网 | 97超碰人人爱 | 最近中文字幕免费 | 久久久久成人精品免费播放动漫 | 在线91精品 | 久久免费视频在线观看30 | 日本中文字幕网站 | 91日韩免费| 麻豆久久一区二区 | 久久精品国产亚洲精品 | 亚洲精品玖玖玖av在线看 | 国产黄色播放 | 91pony九色丨交换 | 久久精品一区二 | av免费试看| 久久久www成人免费毛片 | 成人午夜性影院 | 黄色在线观看免费网站 | 日韩中文字幕在线不卡 | 亚洲精品资源在线观看 | 日本午夜在线观看 | 欧美亚洲国产精品久久高清浪潮 | 久久久久欧美精品 | 国产精品日韩欧美 | 99视频国产精品免费观看 | 黄色毛片视频免费 | 亚洲视频456 | 黄色三级免费看 | 国产手机视频在线观看 | 五月激情五月激情 | 中文字幕一区二区在线观看 | 日韩在线视频网址 | 亚洲成人二区 | 国产成人免费观看久久久 | 日本久久综合视频 | 精品一区二区三区香蕉蜜桃 | 天天干天天做天天操 | 91.麻豆视频 | 香蕉视频网站在线观看 | 不卡的av中文字幕 | 精品国内自产拍在线观看视频 | 91桃色在线播放 | 日本爱爱免费视频 | 一级免费观看 | 亚洲欧美偷拍另类 | av片子在线观看 | 久久综合中文字幕 | 日韩中文字幕免费电影 | 国产无套精品久久久久久 | 中文字幕一区二区在线播放 | 亚洲国产免费看 | 婷婷精品国产一区二区三区日韩 | 在线视频中文字幕一区 | 久久高视频 | 又黄又刺激的网站 | 国产精品综合久久久久久 | 国产免费久久精品 | 超碰在线9 | 中文av影院 | 久久天天躁 | 日韩精品一区二区在线 | 丁香综合av | 五月天婷婷狠狠 | 久久免费中文视频 | 久久成人国产精品免费软件 | 911久久香蕉国产线看观看 | 精品视频久久久久久 | 国产欧美精品一区二区三区四区 | 欧美日韩在线观看视频 | 又黄又刺激 | 国产91aaa | 婷婷国产视频 | 亚洲理论影院 | 久久国产成人午夜av影院宅 | 国产中文在线字幕 | 91精品国产91| 日韩网站免费观看 | 国产精品视频99 | 在线观看一 | 狠狠综合久久 | 免费久久精品视频 | 99久久99久久综合 | 国产精品精品久久久 | 国产女做a爱免费视频 | 米奇四色影视 | 久久久久久久久久毛片 | 免费a视频在线 | 人人干人人超 | 蜜桃av综合网 | 超碰久热| 欧美日韩首页 | 91精品办公室少妇高潮对白 | 欧美黑人巨大xxxxx | 91原创在线观看 | zzijzzij日本成熟少妇 | 国产精品永久在线观看 | 国产高清不卡一区二区三区 | 最近最新最好看中文视频 | 91午夜精品 | 韩日av在线 | 色综合天天射 | 91福利在线观看 | 久久久久一区二区三区 | 91在线日本 | 91精品一区二区三区蜜桃 | 最近日本中文字幕 | 91影视成人 | 婷婷六月综合亚洲 | 日韩av电影一区 | 天天色天天上天天操 | av电影免费在线看 | 国产专区日韩专区 | 国产精品免费观看在线 | 九九色网 | 天天射天| 日韩美女免费线视频 | 久久久久久久久久影院 | 91看片成人 | 一级性av| 黄色小网站在线 | 91成人精品国产刺激国语对白 | 国产一级二级三级视频 | 日本夜夜草视频网站 | 久久男人中文字幕资源站 | 久久久久 免费视频 | 色综合久久五月天 | 欧美日韩一区二区在线 | 一区二区三区四区五区在线 | 又色又爽的网站 | 91精品视频在线观看免费 | 激情伊人五月天久久综合 | 99在线精品视频在线观看 | 在线看成人| 亚洲免费av电影 | 高清不卡一区二区三区 | 日韩有码在线播放 | 在线成人国产 | 日韩系列在线观看 | 偷拍精偷拍精品欧洲亚洲网站 | 中文区中文字幕免费看 | 久久精品视频在线观看 | 欧美成人xxxxxxxx | 超碰电影在线观看 | 日本中文字幕网 | 在线观看久久久久久 | 免费网站在线观看成人 | 国产特级毛片aaaaaaa高清 | 青青草国产精品 | 激情文学丁香 | 国产成人综 | 午夜精品一区二区三区免费 | 中文字幕在线影视资源 | 国产高清av免费在线观看 | 午夜精品久久久久久 | 午夜美女网站 | 在线亚洲观看 | 久久久精品网站 | 91免费观看 | 色中色综合 | 久久免费成人网 | 激情五月综合 | 黄色中文字幕在线 | 中文字幕在线观看第二页 | 久久成人免费视频 | 日韩欧美在线观看一区二区三区 | 黄色视屏免费在线观看 | 久久精品国产一区二区三区 | 日韩在线免费观看视频 | 字幕网在线观看 | 丝袜美女在线观看 | 91日韩在线 | 免费看黄色大全 | 亚洲精品福利在线 | 在线视频欧美亚洲 | 国产精品福利视频 | 岛国精品一区二区 | 九九热免费精品视频 | 人人插人人爱 | 丁香六月婷婷激情 | 一区二区三区精品在线视频 | 日日夜夜国产 | 九九av | 天堂网一区二区三区 | 亚洲视频免费在线观看 | 中文在线a√在线 | 国产婷婷色 | 四虎免费av | 中文字幕在线播放视频 | 欧美视频xxx | 波多野结衣视频一区二区三区 | 日本中文字幕系列 | 天天天天天天操 | 99免费视频 | 在线视频你懂 | 一区av在线播放 | 中文字幕成人一区 | 国产精品18久久久久久vr | 97超碰在线播放 | 久久综合九色综合97婷婷女人 | 在线观看黄av | 午夜电影一区 | 久久99亚洲网美利坚合众国 | 国产成人精品久久久久 | 五月婷婷免费 | 青春草视频在线播放 | 国产精品久一 | 天天拍天天干 | 国产又粗又长的视频 | 在线电影日韩 | 久色 网 | 久久黄色片子 | 天天干天天草天天爽 | 日韩精品高清不卡 | 欧美日韩精品久久久 | 午夜视频久久久 | 成片人卡1卡2卡3手机免费看 | 国产看片 色 | 国产在线精品区 | 久久精品电影院 | 天天做天天爱夜夜爽 | 久久久久久99精品 | 99久高清在线观看视频99精品热在线观看视频 | www.99在线观看| 免费在线a | 九九综合九九 | 人人插人人 | 国产精品乱码久久久久久1区2区 | 久久久久 免费视频 | 欧美精品亚州精品 | 精品亚洲视频在线观看 | 国产成人一区二区三区在线观看 | 欧美日韩一区二区在线观看 | 国产一区视频在线播放 | 久久久久久久电影 | 伊人伊成久久人综合网小说 | 一区二区三区韩国免费中文网站 | 91九色视频| 在线a亚洲视频播放在线观看 | 亚洲国产网站 | 99久久99久久免费精品蜜臀 | 欧美精品一区二区免费 | av免费观看高清 | 久久人人干 | 91成人在线网站 | 涩av在线 | 五月婷婷天堂 | 色姑娘综合天天 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 亚洲欧美国产精品 | 九九免费观看视频 | 麻豆视频免费在线 | 日韩久久一区 | 蜜臀精品久久久久久蜜臀 | 91久久精品日日躁夜夜躁国产 | 免费在线观看av电影 | 正在播放国产一区 | 麻豆av一区二区三区在线观看 | 狠狠干夜夜爱 | 精品国产乱码久久久久久浪潮 | 午夜精品久久久久久久99 | 黄在线免费观看 | 欧美黑人猛交 | 超碰97久久| 欧美日韩免费看 | 国产精品成人自产拍在线观看 | 久久人视频 | 人人网人人爽 | 国产欧美精品一区二区三区 | 日本久久精品 | 91人人人 | 久久图| 99在线热播 | 国产精品18久久久久久久久 | 国产美女无遮挡永久免费 | 日韩18p| 国产亚洲精品综合一区91 | 精品色综合 | 久久综合九色99 | 亚洲天堂网在线视频 | 黄色性av| 久久社区视频 | 99精品视频免费在线观看 | 久久免费在线观看 | 四虎在线免费视频 | 九七视频在线 | 日本精a在线观看 | 久久综合久久综合这里只有精品 | 伊人色综合久久天天网 | 国产精品高潮呻吟久久av无 | 成人免费av电影 | 免费视频91蜜桃 | 日韩高清不卡一区二区三区 | 国产午夜精品一区二区三区四区 | 亚洲激情一区二区三区 | 亚洲年轻女教师毛茸茸 | av成人亚洲 | 免费国产在线观看 | 久久精品一二三区白丝高潮 | 日韩视频a | 久久精品久久久精品美女 | 久久天堂精品视频 | 天天射天天拍 | 97人人澡人人爽人人模亚洲 | 日韩欧美一区二区在线播放 | 成人免费观看视频大全 | 精品字幕| 一区二区三区四区五区六区 | 欧美激情视频三区 | 97国产超碰 | 亚洲视频在线看 | 在线观看视频日韩 | 国产精品成人免费 | 在线免费观看国产黄色 | 天天综合网天天综合色 | 91在线精品秘密一区二区 | 91在线视频观看免费 | 成年人天堂com | 日韩精品免费一区二区 | 久久伊人五月天 | 黄色成年 | 久久久久久久久久伊人 | 久久精品直播 | 狠狠gao | 欧美日韩午夜爽爽 | 中文字幕五区 | www.夜色.com | 四虎国产精品免费 | 亚洲午夜久久久影院 | 综合网五月天 | 久久99精品国产麻豆婷婷 | 欧美午夜激情网 | 天天射成人| 国产日韩精品一区二区三区在线 | 日韩三级中文字幕 | 国产成人久| 日批在线观看 | 有码中文字幕在线观看 | 正在播放国产一区二区 | 日日夜夜人人精品 | 激情视频免费观看 | 欧美性视频网站 | 一区二区三区免费在线观看视频 | 最近中文字幕国语免费高清6 | 国产一级一级国产 | 久草视频观看 | 天天曰夜夜爽 | 一本一本久久aa综合精品 | 91 在线视频 | 日本中文字幕观看 | av免费看看 | 激情影院在线观看 | 精品国产电影 | 亚洲九九| 亚色视频在线观看 | 国产精品免费在线播放 | 国产精品久久久久久久免费大片 | 97视频免费在线 | 99色在线 | 日韩高清精品一区二区 | 久久影视中文字幕 | 国产69精品久久99的直播节目 | 中文字幕精品久久 | 黄色网免费 | 免费在线观看午夜视频 | 日b视频国产 | 丰满少妇在线观看 | 在线观看免费一级片 | 亚洲另类xxxx| 久久综合一本 | 美女亚洲精品 | 中文字幕国产在线 | 久久国产一区二区 | 久久成人麻豆午夜电影 | 高清一区二区三区av | 久久好看| 在线免费观看黄色 | 97视频资源 | 免费福利影院 | 一色屋精品视频在线观看 | 久草精品视频在线观看 | 国产专区在线视频 | 国产一区二区三区高清播放 | 麻豆影视在线免费观看 | 日韩在线不卡 | 日韩电影久久 | 亚洲一区免费在线 | 91电影福利 | 欧美激情第一页xxx 午夜性福利 | 久草在线视频国产 | 国内精自线一二区永久 | 国产系列 在线观看 | 99亚洲精品在线 | 美女久久久久久 | 一区二区三区四区影院 | 国产精品久久久99 | 日本三级吹潮在线 | 欧美a级成人淫片免费看 | 国产精品久久久久一区 | 在线看国产视频 | 国产黄| 久草综合视频 | 国产精品欧美日韩 | 人人爽人人香蕉 | 中文字幕在线观看免费 | 欧美色久 | 成人一级视频在线观看 | 在线导航av | 成人理论在线观看 | 久久这里只有精品久久 | 九九日九九操 | 在线观看视频你懂 | av免费在线看网站 | 欧美成人h版电影 | 国产精品女同一区二区三区久久夜 | 制服丝袜天堂 | 在线播放亚洲 | 开心激情综合网 | 一级片免费观看 | 欧美日韩一区二区久久 | 麻豆久久久久久久 | 99热最新精品 | 国产999久久久 | 91热精品| 免费看色网站 | 天天干中文字幕 | www.色com | 在线亚洲激情 | 中国一级片视频 | 欧美精品一区二区三区一线天视频 | 亚洲日韩中文字幕在线播放 | 亚洲日本一区二区在线 | 中文字幕在线看视频国产 | 91在线日韩 | 色wwwww| 激情欧美丁香 | 成年人免费看片网站 | 国产一区二区不卡在线 | 波多野结衣一区 | 久久国产乱 | 18女毛片| 亚洲资源网 | 缴情综合网五月天 | 久久国内精品99久久6app | 久久久久国产成人精品亚洲午夜 | 久久综合九色综合97婷婷女人 | www.亚洲精品视频 | 免费看一级 | 91在线国内视频 | 日韩有码中文字幕在线 | 国产不卡毛片 | 国产二区视频在线观看 | 视频在线播放国产 | 91av九色| 激情网站网址 | 不卡中文字幕av | 91精品啪在线观看国产81旧版 | 色婷婷免费视频 | 黄免费在线观看 | 日韩欧美电影在线 | 五月婷婷视频在线观看 | 一级黄色免费网站 | 黄色精品在线看 | 色视频网站免费观看 | 伊人国产在线播放 | 五月综合在线观看 | 久精品视频免费观看2 | 日韩在线观看 | 91精品国| 日韩国产欧美在线播放 | 成人a免费视频 | 久久精品电影网 | 久久久久亚洲精品 | 欧美性生活大片 | 国产精品久久久久国产精品日日 | 国产精品久久久久久久久久久杏吧 | 日韩av影视在线观看 | 成人网在线免费视频 | 看片网站黄色 | 91九色在线视频 | 久久久久久久99精品免费观看 | 国产精品毛片一区 | www178ccom视频在线 | 98超碰在线观看 | 久久97超碰 | 少妇视频在线播放 | 国产91综合一区在线观看 | 岛国一区在线 | 91精品国产综合久久久久久久 | 狠狠干中文字幕 | 久久久99国产精品免费 | 天天干天天玩天天操 | 99免费在线 | 久久免费精品 | 天天摸天天操天天舔 | 天天天插| 日韩xxxxxxxxx| 久久国产一区二区三区 | 国产精品99久久久久久小说 | 国产做a爱一级久久 | av成人在线电影 | 欧美日韩中文字幕在线视频 | 国产精品黑丝在线观看 | 最近中文字幕完整视频高清1 | 国产精品网在线观看 | 免费观看一级一片 | 亚洲 综合 国产 精品 | 日韩免费三级 | 成人永久在线 | av线上看| 久久歪歪 | 日本三级中文字幕在线观看 | 国产一级免费视频 | 色网站国产精品 | 国产色a在线观看 | 国产麻豆电影 | 99精品国产在热久久下载 | 日本黄色片一区二区 | 狠狠色网| 天天射天天做 | www.福利| 国产综合精品一区二区三区 | 欧美性色综合网 | 天天草天天色 | 成人全视频免费观看在线看 | 日本精品视频在线观看 | 亚洲天天在线 | 国产精品一区二区久久精品爱微奶 | 久久久蜜桃一区二区 | 激情网第四色 | 日韩成人高清在线 | 黄色一级大片在线观看 | 久久精品99国产国产 | 黄色三级在线观看 | 亚洲蜜桃av | 国产a高清| 美女视频网 | 2021国产在线| 国产xvideos免费视频播放 | 去干成人网 | 欧美91成人网 | 久久r精品 | 日韩电影中文字幕 | 欧美日韩性视频在线 | 9999在线| 国产高清绿奴videos | 97电影网手机版 | 久久久免费毛片 | 久久人人爽人人片av | 玖玖在线视频观看 | 国产精品99蜜臀久久不卡二区 | 美女网站久久 | 久草网首页 | 成人毛片一区二区三区 | 国内精品99| 狠狠色丁香婷婷综合久久片 | 久久999精品| av看片网 | 欧美一二区在线 |