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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

遍历opencv中的mat像素的几种方法和概念

發布時間:2023/12/18 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遍历opencv中的mat像素的几种方法和概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在看矩形濾波的時候忽然腦子短路,把一些概念全弄混了,現總結一下,以便下次再混的時候可以參考確認下,自己的理解,有錯的地方還請指正。

?????????首先,在Opencv2中基本上都是用的Mat來表示圖像了,C++的函數調用中基本上也都是Mat圖,從根本上說,一張圖像是一個由數值組成的矩陣,矩陣的每一個元素代表一個像素。對于灰度圖像而言,像素有8位無符號數表示,其中0代表黑色,255代表白色。那么矩陣和圖像間到底是一個什么樣的關系呢。

?????????第一:Mat圖有行和列,即cv::Mat中有公有成員變量cols和rows,注意,這里的cols就是圖像的寬度width,rows就是圖像的高度height。這個width和height我們可以在其它Opencv的成員中得到,比如矩形Rect,而矩形Rect就是一個經常會用到的結構了,我自己接觸到的就包括鼠標選擇矩形區域、框住目標的矩形區域、濾波器矩形模版、目標的矩形特征、矩形內的運算等等。可以說Rect是一個非常常用的結構,也是Opencv里非常有用的一個結構,本質上矩形區域就是圖像的一個子部分,或者說圖像矩陣的一個子矩陣。

?????????這里我引用《OpenCV學習筆記(四十一)——再看基礎數據結構core》中關于Rect的介紹,Rect_類有些意思,成員變量x、y、width、height,分別為左上角點的坐標和矩形的寬和高。常用的成員函數有Size()返回值為一個Size,area()返回矩形的面積,contains(Point)用來判斷點是否在矩形內,inside(Rect)函數判斷矩形是否在該矩形內,tl()返回左上角點坐標,br()返回右下角點坐標。

?????????第二:Mat圖中的圖像像素位置表示和矩陣中元素的表示。這里引用《訪問Mat圖像中每個像素的值》中幾張圖來表示Mat矩陣中存數據的關系。單通道灰度圖數據存放格式:

???????????????????????????????????????????????????????????????????

多通道的圖像中,每列并列存放通道數量的子列,如RGB三通道彩色圖:

?????????????????????????????????????????????

這時,大家得注意了,二維矩陣的行和列用來表示一個元素,并且一般是從0標號開始,所以實際上是有m+1列,也就是說寬度width是m+1的,行類似。還有就是Mat.at(int y, int x)來訪問一個像素,這時候的y表示的行號,x表示的列號,相對應的就是x表示水平的寬,y表示的豎直的高,只不過x和y都是從0開始的標號。容易搞混的地方就在于一些矩陣的相減了,相減完后怎么表示像素位置,這個時候一般比較難把握,但是只要明白矩陣里x,y,width,height的關系,搞清楚就容易多了。

Mat dst;

?int height = dst.rows;
?? ?int width = dst.cols;

for (int i = 0; i < height; i++) {

?? ??? ??? ?for (int j = 0; j < width; j++) {

//假如以十字形遍歷索引,則十字中心(i * width + j),上下分別是((i -1)* width + j)((i +1)* width + j)

//左右分別是(i * width + j-1)(i * width + j+1)

//這里的i是代表行數,j代表列數,即所在的行的第幾列
?? ??? ??? ??? ?int index = i * width + j;
?? ??? ??? ??? ?//像素值?? ??? ?
?? ??? ??? ??? ?int data = (int)dst.data[index];
?? ??? ??? ??? ?
? ? ? ? ? ? ? ?}

?? ??? ??? ?}
?? ??? ??? ?

?

?

//=====================================指針法==================================================//

#include<opencv2/opencv.hpp>

#include<iostream>

using?namespace?std;

using?namespace?cv;

int?main()

{

????Mat?img=imread("f:/1.jpg");

????int?height=img.rows;

????int?width=img.cols;

????for(int?i=0;i<height;i++)

????{

????????unsigned?char?*data=img.data+i*width*img.channels();

????????for(int?j=0;j<width;j++)

????????{

????????????int?r=*(data+j*img.channels());

????????????int?g=*(data+j*img.channels()+1);

????????????int?b=*(data+j*img.channels()+2);

????????????cout<<r<<"?"<<g<<"?"<<b<<endl;

????????}

????}????????

????img.release();

????system("pause");

????return?1;

}

//============================================================================================//

推薦使用C++格式,比較方便使用

#include?"WangSetup.h"

?

#include?<iostream>

#include?<cv.h>

#include?<highgui.h>

?

using?namespace?std;

?

int?main()

{

????//C++?Format

????cv::Mat?img?=?cv::imread("lena.jpg");

????//取img中(30,?20)這個像素點的bgr信息

????cv::Vec3b?bgr?=?img.at<cv::Vec3b>(30,?20);

????cout?<<?"B:?"?<<?(unsigned?int)bgr.val[0]?<<?",?";

????cout?<<?"G:?"?<<?(unsigned?int)bgr.val[1]?<<?",?";

????cout?<<?"R:?"?<<?(unsigned?int)bgr.val[2]?<<?endl;

?

?

????//C?Format

????IplImage?*img2?=?cvLoadImage("lena.jpg");????????//8UC3,?(0,0)B,?(0,0)G,?(0,0)R,?(0,1)B,?...

????char?*ptr?=?img2->imageData???????//圖像首地址

????????+?img2->widthStep?*?30????????//每行大小?*?行數

????????+?3?*?20;????????????????????//BGR占3個大小空間?*?列數

????printf("B:?%d,?G:?%d,?R:?%d\n",?(uchar)ptr[0],?(uchar)ptr[1],?(uchar)ptr[2]);

????cvReleaseImage(&img2);

?????

????return?0;

}

?

?

?

1.用動態地址操作像素:

?? ?Mat srcImage(100, 100, CV_8UC3, Scalar(200,20,100));
?
?? ?imshow("顯示圖像", srcImage);
?
?
?? ?int rowNumber = srcImage.rows;
?? ?int colNumber = srcImage.cols;
?
?
?? ?for (int i = 0; i < rowNumber; i++)
?? ?{
?? ??? ?for (int j = 0; j < colNumber; j++)
?? ??? ?{
?? ??? ??? ?if (srcImage.at<Vec3b>(i, j)[0] > 180)?
?? ??? ??? ?{
?? ??? ??? ??? ?srcImage.at<Vec3b>(i, j)[0] = 0;?? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?if (srcImage.at<Vec3b>(i, j)[1] < 50)?
?? ??? ??? ?{
?? ??? ??? ??? ?srcImage.at<Vec3b>(i, j)[1] = 255;
?? ??? ??? ?}
?
?? ??? ??? ?if (srcImage.at<Vec3b>(i, j)[2] < 120)?
?? ??? ??? ?{
?? ??? ??? ??? ?srcImage.at<Vec3b>(i, j)[2] = 0;
?? ??? ??? ?}
?
?? ??? ?}
?? ?}
?
?
?? ?imshow("處理后的圖像", srcImage);
cv::mat的成員函數: .at(int y, int x)可以用來存取圖像中對應坐標為(x,y)的元素坐標。(Mat類中的cols和rows給出了圖像的寬和高。而成員函數at(int x, int y)可以用來存取圖像的元素。)由于at方法本身不會對任何數據類型進行轉化,故一定要確保指定的數據類型和矩陣中的數據類型相符合。
假設提前已知一幅圖像img的數據類型為 unsigned char型灰度圖(單通道),對像素的賦值操作為image.at<uchar>(i,j) = value。而對于彩色圖像,每個像素由三個部分構成:藍色通道、綠色通道和紅色通道(BGR),對于一個包含彩色圖像的Mat,會返回一個由三個8位數組組成的量。OpenCV將此類型定義為Vec3b,即由三個unsigned char組成的向量。這也解釋了為什么存取彩色圖像像素的代碼可以寫成:image.at<Vec3b>(i,j)[channel] = value;

以下是統計canndy后的0像素點與255像素點之間的數量的比值:

#define _CRT_SECURE_NO_WARNINGS
?
#include <iostream>
#include <opencv2/opencv.hpp>
?
using namespace std;
using namespace cv;
?
int main()?
{
?? ?Mat graySrc = imread("../../11.bmp", 0);
?
?? ?Mat canImage;
?? ?Canny(graySrc, canImage, 60, 120);
?
?? ?int PicZero = 0;
?? ?int PicFull = 0;
?
?? ?for (int i = 0; i < graySrc.rows; ++i)?
?? ?{
?? ??? ?for (int j = 0; j < graySrc.cols; ++j)?
?? ??? ?{
?? ??? ??? ?if (canImage.at<unsigned char>(i, j) == 0)?
?? ??? ??? ?{
?? ??? ??? ??? ?PicZero++;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?PicFull++;
?? ??? ??? ?}?? ?
?? ??? ?}
?? ?
?? ?}
?
?? ?cout << "0像素點比255像素點的比值為" << (double)PicZero / PicFull << endl;
?? ?system("pause");
}


2.用指針的方法:

有時候我們需要遍歷Mat中的每一個像素點,并且對像素點進行處理,這里以圖像所有像素點都減去div(div屬于int類型)

void colorReduce(Mat& inputImage, Mat& outputImage, int div)
{
?? ?// 參數準備
?? ?outputImage = inputImage.clone();
?
?? ?int rowNumber = outputImage.rows;
?? ?int colNumber = outputImage.cols*outputImage.channels();
?
?? ?for (int i = 0; i < rowNumber; i++)
?? ?{
?? ??? ?// 獲取第i行的首地址
?? ??? ?uchar* data = outputImage.ptr<uchar>(i);
?
?? ??? ?for (int j = 0; j < colNumber; j++) ?// 列循環
?? ??? ?{
?? ??? ??? ?// 開始處理每一個像素值,每一個像素值都減去div
?? ??? ??? ?data[j] = data[j] - div;
?? ??? ?}
?? ?}
}
也可以寫成如下形式:

Mat inverseColor1(Mat srcImage)?
{
?? ?Mat tempImage = srcImage.clone();
?? ?int row = tempImage.rows;
?? ?int col = tempImage.cols * tempImage.channels();
?
?? ?for (int i = 0; i < row; ++i)?
?? ?{
?? ??? ?const unsigned char* sourcedata = srcImage.ptr(i);
?? ??? ?unsigned char* data = tempImage.ptr(i);
?? ??? ?for (int j = 0; j < col; j++)
?? ??? ?{
?? ??? ??? ?data[j] = sourcedata[j] - div;
?? ??? ?}
?? ?}
?? ?return tempImage;
}
此時是定義了兩個指針類型: const unsigned char*和 unsigned char*,其中const unsigned char* 中的內容只能夠被讀取,不能被修改。

特別需要注意的是:Mat中每一行元素的個數=列數*通道數


如需要打印M,

?? ?Mat M(3, 2, CV_8UC3, Scalar(0, 0, 255));
?? ?cout << M << endl;
打印結果為:驗證了每一行元素的個數為: 列數*通道數

另外需要注意的是:Mat 除了擁有成員變量cols,rows,成員函數channels()之外,還提供了ptr函數可以返回得到圖像任意行的首地址。

3.用迭代器Matlterator_:

????????Matlterator_是Mat數據操作的迭代器,:begin()表示指向Mat數據的起始迭代器,:end()表示指向Mat數據的終止迭代器。迭代器方法是一種更安全的用來遍歷圖像的方式,首先獲取到數據圖像的矩陣起始,再通過遞增迭代實現移動數據指針。

Mat inverseColor4(Mat srcImage)?
{
?? ?Mat tempImage = srcImage.clone();
?
?? ?// 初始化原圖像迭代器
?? ?MatConstIterator_<Vec3b> srcIterStart = srcImage.begin<Vec3b>();
?? ?MatConstIterator_<Vec3b> srcIterEnd = srcImage.end<Vec3b>();
?
?? ?// 初始化輸出圖像迭代器
?? ?MatIterator_<Vec3b> resIterStart = tempImage.begin<Vec3b>();
?? ?MatIterator_<Vec3b> resIterEnd = tempImage.end<Vec3b>();
?
?? ?while (srcIterStart != srcIterEnd)?
?? ?{
?? ??? ?(*resIterStart)[0] = 255 - (*srcIterStart)[0];
?? ??? ?(*resIterStart)[1] = 255 - (*srcIterStart)[1];
?? ??? ?(*resIterStart)[2] = 255 - (*srcIterStart)[2];
?
?? ??? ?srcIterStart++;
?? ??? ?resIterStart++;
?? ?}
?
?? ?return tempImage;
?
}
?

?

?

Color Reduce
還是使用經典的Reduce Color的例子,即對圖像中的像素表達進行量化。如常見的RGB24圖像有256×256×256中顏色,通過Reduce Color將每個通道的像素減少8倍至256/8=32種,則圖像只有32×32×32種顏色。假設量化減少的倍數是N,則代碼實現時就是簡單的value/N*N,通常我們會再加上N/2以得到相鄰的N的倍數的中間值,最后圖像被量化為(256/N)×(256/N)×(256/N)種顏色。

方法零:.ptr和[]操作符
Mat最直接的訪問方法是通過.ptr<>函數得到一行的指針,并用[]操作符訪問某一列的像素值。

// using .ptr and []
void colorReduce0(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? ? ? ? data[i]= data[i]/div*div + div/2;
? ? ? ? ? ? } ? ? ? ? ? ? ? ? ?
? ? ? }
}

方法一:.ptr和指針操作
除了[]操作符,我們可以移動指針*++的組合方法訪問某一行中所有像素的值。

// using .ptr and * ++?
void colorReduce1(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
?? ??? ??? ??? ? *data++= *data/div*div + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法二:.ptr、指針操作和取模運算
方法二和方法一的訪問方式相同,不同的是color reduce用模運算代替整數除法

// using .ptr and * ++ and modulo
void colorReduce2(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
?? ??? ??? ? ? ? ?int v= *data;
? ? ? ? ? ? ? ? ? *data++= v - v%div + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法三:.ptr、指針運算和位運算
由于進行量化的單元div通常是2的整次方,因此所有的乘法和除法都可以用位運算表示。

// using .ptr and * ++ and bitwise
void colorReduce3(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法四:指針運算
方法四和方法三量化處理的方法相同,不同的是用指針運算代替*++操作。

// direct pointer arithmetic
void colorReduce4(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?int step= image.step; // effective width
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? // get the pointer to the image buffer
?? ? ?uchar *data= image.data;
? ? ? for (int j=0; j<nr; j++) {
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? *(data+i)= *data&mask + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? ? ? ? data+= step; ?// next line
? ? ? }
}

方法五:.ptr、*++、位運算以及image.cols * image.channels()
這種方法就是沒有計算nc,基本是個充數的方法。

// using .ptr and * ++ and bitwise with image.cols * image.channels()
void colorReduce5(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<image.cols * image.channels(); i++) {
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}
?

方法六:連續圖像
Mat提供了isContinuous()函數用來查看Mat在內存中是不是連續存儲,如果是則圖片被存儲在一行中。

// using .ptr and * ++ and bitwise (continuous)
void colorReduce6(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols * image.channels(); // total number of elements per line
?? ? ?if (image.isContinuous()) ?{
?? ??? ? ?// then no padded pixels
?? ??? ? ?nc= nc*nr;?
?? ??? ? ?nr= 1; ?// it is now a 1D array
?? ? ? }
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法七:continuous+channels
與方法六基本相同,也是充數的。

// using .ptr and * ++ and bitwise (continuous+channels)
void colorReduce7(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols ; // number of columns
?? ? ?if (image.isContinuous()) ?{
?? ??? ? ?// then no padded pixels
?? ??? ? ?nc= nc*nr;?
?? ??? ? ?nr= 1; ?// it is now a 1D array
?? ? ? }
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? *data++= *data&mask + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法八:Mat _iterator
真正有區別的方法來啦,用Mat提供的迭代器代替前面的[]操作符或指針,血統純正的官方方法~

// using Mat_ iterator?
void colorReduce8(cv::Mat &image, int div=64) {
?? ? ?// get iterators
?? ? ?cv::Mat_<cv::Vec3b>::iterator it= image.begin<cv::Vec3b>();
?? ? ?cv::Mat_<cv::Vec3b>::iterator itend= image.end<cv::Vec3b>();
?? ? ?for ( ; it!= itend; ++it) {
? ? ? ? (*it)[0]= (*it)[0]/div*div + div/2;
? ? ? ? (*it)[1]= (*it)[1]/div*div + div/2;
? ? ? ? (*it)[2]= (*it)[2]/div*div + div/2;
?? ? ?}
}
?

方法九:Mat_ iterator 和位運算
把方法八中的乘除法換成位運算。

// using Mat_ iterator and bitwise
void colorReduce9(cv::Mat &image, int div=64) {
?? ? ?// div must be a power of 2
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
?? ? ?// get iterators
?? ? ?cv::Mat_<cv::Vec3b>::iterator it= image.begin<cv::Vec3b>();
?? ? ?cv::Mat_<cv::Vec3b>::iterator itend= image.end<cv::Vec3b>();
?? ? ?for ( ; it!= itend; ++it) {
? ? ? ? (*it)[0]= (*it)[0]&mask + div/2;
? ? ? ? (*it)[1]= (*it)[1]&mask + div/2;
? ? ? ? (*it)[2]= (*it)[2]&mask + div/2;
?? ? ?}
}

方法十:MatIterator_
和方法八基本相同。

// using MatIterator_?
void colorReduce10(cv::Mat &image, int div=64) {
?? ? ?cv::Mat_<cv::Vec3b> cimage= image;
?? ? ?cv::Mat_<cv::Vec3b>::iterator it=cimage.begin();
?? ? ?cv::Mat_<cv::Vec3b>::iterator itend=cimage.end();
?? ? ?for ( ; it!= itend; it++) {?
? ? ? ? (*it)[0]= (*it)[0]/div*div + div/2;
? ? ? ? (*it)[1]= (*it)[1]/div*div + div/2;
? ? ? ? (*it)[2]= (*it)[2]/div*div + div/2;
?? ? ?}
}
?

方法十一:圖像坐標
// using (j,i)
void colorReduce11(cv::Mat &image, int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols; // number of columns
? ? ? for (int j=0; j<nr; j++) {
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? ? ? ? image.at<cv::Vec3b>(j,i)[0]=?? ? image.at<cv::Vec3b>(j,i)[0]/div*div + div/2;
? ? ? ? ? ? ? ? ? image.at<cv::Vec3b>(j,i)[1]=?? ? image.at<cv::Vec3b>(j,i)[1]/div*div + div/2;
? ? ? ? ? ? ? ? ? image.at<cv::Vec3b>(j,i)[2]=?? ? image.at<cv::Vec3b>(j,i)[2]/div*div + div/2;
? ? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法十二:創建輸出圖像
之前的方法都是直接修改原圖,方法十二新建了輸出圖像,主要用于后面的時間對比。

// with input/ouput images
void colorReduce12(const cv::Mat &image, // input image?
? ? ? ? ? ? ? ? ?cv::Mat &result, ? ? ?// output image
? ? ? ? ? ? ? ? ?int div=64) {
?? ? ?int nr= image.rows; // number of rows
?? ? ?int nc= image.cols ; // number of columns
?? ? ?// allocate output image if necessary
?? ? ?result.create(image.rows,image.cols,image.type());
?? ? ?// created images have no padded pixels
?? ? ?nc= nc*nr;?
?? ? ?nr= 1; ?// it is now a 1D array
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
? ? ? for (int j=0; j<nr; j++) {
?? ??? ? ?uchar* data= result.ptr<uchar>(j);
?? ??? ? ?const uchar* idata= image.ptr<uchar>(j);
? ? ? ? ? for (int i=0; i<nc; i++) {
? ? ? ? ? ? *data++= (*idata++)&mask + div/2;
? ? ? ? ? ? *data++= (*idata++)&mask + div/2;
? ? ? ? ? ? *data++= (*idata++)&mask + div/2;
? ? ? ? ? } // end of row ? ? ? ? ? ? ? ??
? ? ? }
}

方法十三:重載操作符
Mat重載了+&等操作符,可以直接將兩個Scalar(B,G,R)數據進行位運算和數學運算。

// using overloaded operators
void colorReduce13(cv::Mat &image, int div=64) {
?? ? ?int n= static_cast<int>(log(static_cast<double>(div))/log(2.0));
?? ? ?// mask used to round the pixel value
?? ? ?uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
?? ? ?// perform color reduction
?? ? ?image=(image&cv::Scalar(mask,mask,mask))+cv::Scalar(div/2,div/2,div/2);
}

時間對比
通過迭代二十次取平均時間,得到每種方法是運算時間如下。

可以看到,指針*++訪問和位運算是最快的方法;而不斷的計算image.cols*image.channles()花費了大量重復的時間;另外迭代器訪問雖然安全,但性能遠低于指針運算;通過圖像坐標(j,i)訪問時最慢的,使用重載操作符直接運算效率最高。
?

總結

以上是生活随笔為你收集整理的遍历opencv中的mat像素的几种方法和概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91桃色国产在线播放 | 日韩精品一区二区三区中文字幕 | 狠狠色丁香婷婷综合久小说久 | 黄色小网站在线观看 | 狠狠色噜噜狠狠狠狠 | 国产毛片在线 | 国产黄色观看 | 国产日韩视频在线观看 | 久久99国产精品久久99 | 午夜私人影院久久久久 | 99精品一区二区 | 国产精品www | 日韩免费视频观看 | 日韩av电影免费在线观看 | 一级全黄毛片 | 麻豆视频大全 | 1000部国产精品成人观看 | 丁香婷婷色综合亚洲电影 | 波多野结衣动态图 | www.夜夜操 | 国内精品久久久久影院优 | 探花视频网站 | 一区二区在线影院 | 国产精品自产拍在线观看网站 | 最近中文字幕在线播放 | 精品99久久久久久 | 亚洲午夜久久久久久久久久久 | 日韩国产欧美视频 | av日韩av | 国产高清视频在线 | 中文字幕国产一区 | 97色婷婷 | 亚洲精品国产自产拍在线观看 | 97视频在线观看成人 | 国产亚洲精品久久久久久大师 | 香蕉视频色 | 成年人免费在线观看 | 五月开心综合 | 成 人 黄 色 视频免费播放 | 9热精品| 免费精品在线 | 久久精品免视看 | 亚洲人在线7777777精品 | 91丨九色丨蝌蚪丰满 | 国产精品第72页 | 一级黄色视屏 | av在线电影免费观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 99久久网站 | 国产精品对白一区二区三区 | 国产美女在线免费观看 | 中文字幕亚洲欧美日韩2019 | 亚洲一二区精品 | 一区在线观看 | 午夜在线免费观看视频 | 国产99久久九九精品免费 | 日韩成人黄色av | 亚洲精品 在线视频 | 国产欧美综合在线观看 | 国产资源免费在线观看 | 99在线精品视频在线观看 | 伊人天天狠天天添日日拍 | 日韩高清在线一区二区三区 | 米奇影视7777 | 亚洲综合在线五月天 | 久久色中文字幕 | 中文字幕首页 | 久久精品国产一区 | 香蕉在线播放 | 永久免费精品视频 | 欧美日韩国产综合一区二区 | 欧美日韩首页 | 在线精品在线 | 成人精品国产免费网站 | 黄色国产在线观看 | 免费色视频 | av手机在线播放 | 中文字幕在线久一本久 | 亚洲精品1区2区3区 超碰成人网 | 天天操夜操 | 天天插天天狠天天透 | 国产小视频网站 | 亚洲综合色婷婷 | 97视频免费在线观看 | 国内精品久久影院 | 亚洲成人av一区 | 激情网在线视频 | 日韩三级免费 | 久久国产精品99国产 | 国产乱码精品一区二区蜜臀 | 日韩中文字幕免费在线播放 | 国产麻豆视频 | 亚洲欧美国产精品va在线观看 | 欧美黑吊大战白妞欧美 | 亚洲精品伦理在线 | 在线观看不卡视频 | 天天综合天天做天天综合 | 免费一级特黄录像 | 亚洲综合色丁香婷婷六月图片 | 色吊丝在线永久观看最新版本 | 免费一级片久久 | 中文字幕一二三区 | 伊人五月综合 | 国产黄大片在线观看 | 色婷婷久久| 色综合久久99 | 国模一二三区 | 国产成人久久av977小说 | 国产在线一区二区三区播放 | 日韩欧美在线综合网 | 国产中文字幕亚洲 | 精品视频| 97精品国产97久久久久久 | 亚洲国产精品成人av | 国产一级二级在线观看 | 国产欧美精品在线观看 | 亚洲免费公开视频 | 亚洲爱av| 天天干天天射天天操 | 中文字幕在线影视资源 | 国产资源精品在线观看 | 狠狠色丁香九九婷婷综合五月 | 麻豆国产精品永久免费视频 | 精油按摩av | 亚洲天堂网在线视频 | 国产大陆亚洲精品国产 | 中文字幕字幕中文 | 亚洲一区二区三区四区在线视频 | 欧美精品一区二区蜜臀亚洲 | 欧美乱熟臀69xxxxxx | 国产精品完整版 | 国产精成人品免费观看 | 久久999精品 | 免费三级影片 | 99国产精品久久久久久久久久 | 黄色三级免费看 | 久久国产一区 | 国产精品视频内 | 成人在线视频网 | 国产成人精品av久久 | 日韩免费在线观看网站 | 国产中文字幕一区 | 国产精品久久久久久久久岛 | 丁香视频全集免费观看 | 久久第四色 | av综合av| 97超碰超碰久久福利超碰 | 日韩欧美专区 | 2023年中文无字幕文字 | av大全在线播放 | 久久精品亚洲综合专区 | 麻豆视频免费版 | 国产精品岛国久久久久久久久红粉 | 夜夜嗨av色一区二区不卡 | 国产日本在线播放 | 色婷婷综合久色 | 在线成人中文字幕 | 久草网视频在线观看 | 久久影院一区 | 亚洲色综合| 国产精品麻豆免费版 | 午夜精品一区二区三区可下载 | 97超碰在线久草超碰在线观看 | 日本久久中文字幕 | 中文乱码视频在线观看 | 国产 日韩 中文字幕 | 国产成人一区二区三区 | 色停停五月天 | 久久人人干 | 狠狠躁夜夜躁人人爽视频 | 免费看毛片在线 | 婷婷精品国产欧美精品亚洲人人爽 | 精品96久久久久久中文字幕无 | 国产精品久久久久久久久久久久久久 | www.久久视频 | 最近中文字幕免费观看 | 欧美日韩精品在线播放 | 成人免费看视频 | 国产视频1| 97精品久久 | 亚洲乱码精品 | 久久久久久久国产精品视频 | 久久免费福利视频 | 久草精品视频在线观看 | 亚洲精品免费观看视频 | 亚洲精品免费在线视频 | 国产亚洲字幕 | 一区二区三区在线观看 | 成年人在线观看网站 | 久久经典国产 | 999久久久欧美日韩黑人 | 亚洲一区精品人人爽人人躁 | 99精品视频免费看 | 久久系列 | 久久婷婷丁香 | 色婷婷www | 久久精品一区二区三区国产主播 | 亚洲精品国产精品国自产观看浪潮 | 精品在线不卡 | 国产成人av一区二区三区在线观看 | 精品国产亚洲日本 | a视频在线观看 | 免费久久网 | 欧美一级视频在线观看 | 一区在线播放 | 99视频精品免费观看, | 成年人在线观看免费视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲黄色成人 | 91久久奴性调教 | 成人欧美日韩国产 | 99视频在线精品国自产拍免费观看 | 国产精品岛国久久久久久久久红粉 | 色天天综合久久久久综合片 | 天天做天天干 | 精品爱爱| 丁香六月天婷婷 | 白丝av在线| 欧美性视频网站 | 日韩特黄一级欧美毛片特黄 | 另类老妇性bbwbbw高清 | 日韩在线精品一区 | 91福利在线观看 | 狠狠操.com | 四虎5151久久欧美毛片 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲精品字幕 | 精品美女在线视频 | 狠狠色狠狠色综合日日小说 | 久久久国产精品网站 | 日韩电影在线观看中文字幕 | 久久久久国产成人精品亚洲午夜 | 中文字幕在线观看免费高清电影 | 亚洲精品动漫成人3d无尽在线 | 国产操在线 | 国产精品久久久久久久久久久久 | 成人中心免费视频 | 久久久精品二区 | 97av在线视频 | 色婷婷a | 伊人视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 婷婷视频在线播放 | 成人网看片 | 国产精品一区电影 | 狠狠gao| 天天摸天天弄 | 九九热在线观看视频 | 夜色资源站国产www在线视频 | 欧亚日韩精品一区二区在线 | 日韩综合精品 | 一区中文字幕电影 | 91亚洲在线 | 99久久精品国产网站 | 波多野结衣精品在线 | 色婷丁香 | 黄色小说免费观看 | 精品一区三区 | 激情视频区| a爱爱视频| 亚洲日韩中文字幕在线播放 | 888av| 欧美日韩国产一区二区三区 | 久草在线官网 | 色婷婷综合成人av | 在线观看免费中文字幕 | 久久色视频 | 久久人人爽人人人人片 | 精品毛片在线 | 日日夜夜噜 | 天天干com| 欧美一级性生活视频 | 日韩精品免费在线观看视频 | 黄色com | 国产亚州av | 中文av网站 | 青草视频在线免费 | 久久9精品| 午夜av免费观看 | 久久久国产精品麻豆 | 国产日产亚洲精华av | 国产伦精品一区二区三区在线 | 精品国产一区二区三区久久久久久 | 精品主播网红福利资源观看 | 久久久免费国产 | 日韩视频一区二区在线 | 久久96国产精品久久99软件 | 成年人国产精品 | 精品国产1区2区 | 久久精品99视频 | 日韩黄色免费看 | 国产精品久久久久久999 | 久久精品国产第一区二区三区 | 亚洲综合色播 | 中文在线√天堂 | av资源中文字幕 | 91精彩视频在线观看 | 成人国产精品久久久春色 | 亚洲精品网站 | 免费视频三区 | 日本激情视频中文字幕 | 天天爱天天 | 美女免费视频网站 | 亚洲jizzjizz日本少妇 | 91久色蝌蚪 | 天天爽人人爽 | 久久99免费视频 | 欧美一级在线 | 黄色软件在线看 | 婷婷天天色 | 亚洲最大免费成人网 | 国产精品久久久久影院日本 | 免费色黄 | 久久久久女人精品毛片 | 人人草人人草 | 久久97久久97精品免视看 | 国产精品久久久久影院日本 | 日韩在线视频不卡 | 91九色porny蝌蚪主页 | 91精品婷婷国产综合久久蝌蚪 | 久久av在线播放 | 亚洲最新av | 欧美性高跟鞋xxxxhd | 成人av免费 | 国内视频在线观看 | 中文字幕高清免费日韩视频在线 | 欧美国产一区在线 | 97在线播放视频 | 中文字幕亚洲欧美日韩 | 丁香九月婷婷 | 午夜男人影院 | 色www免费视频 | 日本久久成人中文字幕电影 | 精品日韩中文字幕 | 99精品免费| 在线观看一区 | 99国产一区二区三精品乱码 | 久久这里只有精品视频首页 | 国产二级视频 | 日日夜夜添 | 国产精品午夜免费福利视频 | 日韩网站在线播放 | 精品国产电影 | 国产精品第一页在线观看 | 精品国产一区二区三区久久久蜜月 | 日本乱码在线 | 久久国产乱 | 国产精品亚洲综合久久 | 91视频在线观看大全 | 国产一区二区三区久久久 | 国产精品淫片 | 精品在线免费观看 | 少妇bbr搡bbb搡bbb | 国产精品手机在线 | 国产成人精品一区二 | 久久夜色精品国产欧美一区麻豆 | 欧美激情视频一区 | 蜜臀av.com| 欧美中文字幕第一页 | 国外调教视频网站 | 亚洲精品18日本一区app | 欧美视频网址 | 欧美日韩国产页 | 久久福利小视频 | 精品亚洲视频在线观看 | av黄色影院| 欧美日韩在线视频免费 | 国产一级做a | 黄色av电影一级片 | 精品在线观看一区二区 | 女人18精品一区二区三区 | aa级黄色大片 | 欧美一级免费在线 | 美国三级黄色大片 | 国产系列精品av | 国产男女无遮挡猛进猛出在线观看 | 亚洲成人av片在线观看 | 超碰97在线看 | 国产精品丝袜久久久久久久不卡 | 久久综合在线 | 麻豆94tv免费版 | a v在线观看 | 黄色av影视 | 国产精品99久久久精品 | 久久影院精品 | 国产成人免费在线观看 | 国产黄在线看 | 成年人免费电影 | 五月天色网站 | 一区二区视频在线看 | 精品久久五月天 | 手机av在线免费观看 | 在线色亚洲 | 婷婷开心久久网 | 欧美精品乱码久久久久久按摩 | 最新国产视频 | 在线观看日韩 | 在线a亚洲视频播放在线观看 | 成人啊 v| 久久亚洲影院 | av手机版| 国产成人av电影在线观看 | 激情视频免费在线 | 99精品免费久久久久久久久 | 国产精品美女久久久久久免费 | 国产小视频在线免费观看 | 亚洲国产人午在线一二区 | 中文字幕在线精品 | 九九久久电影 | 免费看的黄色 | 国产成人久久精品亚洲 | 亚洲国产三级在线 | 亚洲精品自拍视频在线观看 | 亚洲最新av在线网站 | 国产免费久久久久 | 中文字幕日韩免费视频 | 亚洲精品动漫久久久久 | 精品成人久久 | 丁香资源影视免费观看 | av在线电影播放 | 欧美日韩三级 | 久久激情影院 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 日韩视频a| 91av九色| 久久爽久久爽久久av东京爽 | www.99在线观看 | 国产成人福利 | 岛国大片免费视频 | 高清有码中文字幕 | 国产123av| 久久经典国产视频 | 婷五月激情 | 欧美综合在线视频 | 日韩色一区二区三区 | 五月天激情综合网 | 国产婷婷vvvv激情久 | 99久久99久久精品 | 开心激情综合网 | 在线不卡的av | 国产高清无线码2021 | 亚洲精品一区二区三区四区高清 | 激情偷乱人伦小说视频在线观看 | 97精品国产97久久久久久 | 在线www色| 久久精品一 | 日韩在线观看影院 | 成片免费观看视频999 | 91视频啊啊啊 | 久久一线 | 国产成人精品午夜在线播放 | 人人插人人澡 | avwww在线观看 | 色99之美女主播在线视频 | 欧美日韩精品久久久 | 婷婷新五月 | 亚洲精品看片 | 蜜臀av一区二区 | 国产国语在线 | 天天干天天干天天操 | 欧美 亚洲 另类 激情 另类 | 国产精品专区h在线观看 | 天天射天天搞 | 美女免费av | 日本精品中文字幕在线观看 | 日日干夜夜草 | 国内精品在线看 | 中文字幕乱偷在线 | 久久香蕉电影网 | 日韩伦理片hd| 色a网 | 99久久精品国产亚洲 | 日韩二三区 | 欧美激情另类文学 | 日韩一区二区三 | av夜夜操 | 色综合久久久久久久 | 最近中文字幕高清字幕免费mv | 国产精品正在播放 | 国产在线精品观看 | 中文字幕精品在线 | 97麻豆视频 | 欧美日韩首页 | 久久国产女人 | 日韩精品免费一区二区在线观看 | 国产美女无遮挡永久免费 | 久草剧场 | 日本精品视频在线 | 丁香色天天 | 在线视频 区 | 欧美黑人性猛交 | 在线观看91| 国产天天爽 | 成人av在线观 | 日韩av电影一区 | 国产亚洲精品久久久久久网站 | 夜夜操狠狠干 | 丁香在线观看完整电影视频 | 国产精品成人在线 | av一级免费 | 久久精品国产亚洲aⅴ | 狠狠色丁香久久婷婷综 | 天天干天天玩天天操 | 国产片免费在线观看视频 | 亚洲精品白浆高清久久久久久 | 久久精品国产精品 | 超碰在线97观看 | 日韩在线观看中文字幕 | 欧美极品裸体 | 久久影院中文字幕 | 狠狠色狠狠色综合日日92 | 四虎最新域名 | 99综合视频 | 国内免费的中文字幕 | 99久久婷婷国产综合亚洲 | 国产中文字幕在线看 | 免费大片av| 日韩在线不卡av | 日韩在线二区 | 国产精品久久久久久久av大片 | 免费视频久久 | 天天夜夜操 | www夜夜操com| 国产精品99久久久精品 | 欧美污网站 | 欧美在线你懂的 | 天堂在线视频免费观看 | 99视频播放 | 国产精品亚洲视频 | 国产黄色片一级三级 | 久久久久久久久久网 | 午夜久久 | 婷婷色5月 | 日本一区二区三区视频在线播放 | 日韩手机在线观看 | 91精选在线 | 91黄色免费看 | 久操中文字幕在线观看 | 国产精品久久久久久久久久久久午夜片 | 色欧美日韩 | 99久热在线精品视频观看 | 国产韩国精品一区二区三区 | 美女视频永久黄网站免费观看国产 | 国产精品原创 | 欧美日bb| 天天干天天碰 | 91精品国产乱码久久 | 人人爽人人射 | 日韩精品免费在线观看 | 99久久夜色精品国产亚洲96 | 精品国产一区二区三区蜜臀 | 97色狠狠 | 视频一区二区视频 | 99这里只有 | 99视频免费播放 | 国产高清免费 | 久久午夜网 | 韩国精品在线观看 | 91视频在线| 精品久久久久久一区二区里番 | 国产高清av免费在线观看 | 四虎5151久久欧美毛片 | 91入口在线观看 | 国产精品嫩草影院123 | 五月天欧美精品 | 四虎在线观看视频 | 五月天国产精品 | 999热视频 | 国产精品一区二区久久国产 | 国产区免费在线 | 亚洲精品一区二区18漫画 | 国产在线观看免 | 日韩激情免费视频 | 91中文在线视频 | 18久久久久| 亚洲日日夜夜 | 欧美精品三级在线观看 | 日韩av视屏在线观看 | 丁香婷婷综合网 | 色综合天| 懂色av一区二区三区蜜臀 | 色婷婷狠狠干 | 在线 成人| 奇米影视777影音先锋 | 97福利在线 | 亚洲精品视频播放 | 日韩中文字幕免费视频 | 日本护士三级少妇三级999 | 亚洲成人在线免费 | 亚洲视频精品 | 天天操天天射天天爽 | 日韩在线一区二区免费 | 国产aaa大片| 国产成人三级三级三级97 | 天天色天天上天天操 | 五月婷婷黄色网 | 美女视频黄频大全免费 | 天天做天天爱天天爽综合网 | 天天色官网 | 日韩免费电影 | 国产中文字幕av | 激情综合电影网 | 999日韩 | 永久免费的啪啪网站免费观看浪潮 | 在线观看色网 | 99色视频| 欧美日韩国产区 | 久久97久久 | 亚洲无在线 | caobi视频| 日日爱网站 | 日韩中文字幕视频在线观看 | 白丝av免费观看 | 日韩欧美在线影院 | 中文字幕免费一区 | 久久国产精品99国产 | 日本黄色免费看 | 狠狠狠的干 | 久产久精国产品 | 天天操天天干天天摸 | 国产福利一区在线观看 | 久草| 亚洲日本国产精品 | 伊人色综合久久天天网 | 中文字幕免费高 | 国产日韩精品在线观看 | 久久久久免费精品视频 | 中文字幕在线有码 | 狠狠躁日日躁狂躁夜夜躁 | 中文字幕久久网 | 天天综合中文 | 亚洲一区二区三区四区在线视频 | 亚洲.www | 九九热在线视频 | 激情久久综合网 | 久久国产精品一区二区 | 日本精品视频一区 | 91污污视频在线观看 | 天天操婷婷 | 在线免费观看视频一区二区三区 | 69xx视频 | 97国产在线观看 | 成人亚洲欧美 | 四虎成人精品永久免费av九九 | 在线视频18在线视频4k | 久久久久久黄 | 国产一级高清 | 国产视频精品免费播放 | 成人毛片在线观看视频 | 最新av网址在线 | 91在线视频免费播放 | 日韩精品欧美视频 | 伊人超碰在线 | 天天躁天天躁天天躁婷 | 欧美日韩国产精品一区二区三区 | 日韩a免费| 天堂久色| 最新国产在线视频 | 国产成人久久久久 | 成人免费一级 | 日韩电影黄色 | 六月色婷婷 | 婷婷六月中文字幕 | 亚洲最大成人免费网站 | 国产一区二区三区在线免费观看 | 亚洲国产精品久久久久婷婷884 | 免费视频91蜜桃 | 久久久久一区二区三区四区 | 伊人干综合 | 在线国产日本 | 在线观看视频91 | 亚洲午夜大片 | 中文字幕一区二区三区乱码不卡 | 欧美精品乱码久久久久久按摩 | 黄色一级大片免费看 | 国产视频黄 | 成人午夜av电影 | 韩日电影在线观看 | 精品视频123区在线观看 | 成年人在线免费看视频 | 久久久www成人免费精品 | 色综合久久天天 | 一区中文字幕 | 中文字幕在线电影 | 日韩午夜电影网 | 国产自产在线视频 | 中文字幕 成人 | 国产亚洲精品久久久久久久久久 | 免费福利片2019潦草影视午夜 | 亚洲黄在线观看 | 97电影手机版 | 精品1区二区 | 久久国语露脸国产精品电影 | 中文在线资源 | 精品视频在线视频 | 亚洲影音先锋 | www.色午夜,com| 激情亚洲综合在线 | a视频免费在线观看 | 一区二区视 | 草莓视频在线观看免费观看 | 日韩av电影手机在线观看 | 久草视频在线新免费 | 欧美激情综合网 | 九热在线| 国产伦理一区二区 | 免费视频 三区 | 亚洲深爱激情 | 又黄又爽又色无遮挡免费 | 久久久受www免费人成 | 黄色成人av网址 | 久久久久久久久爱 | 国产拍揄自揄精品视频麻豆 | 久久全国免费视频 | 综合国产在线观看 | 97视频免费播放 | 国产精品久久久久久久电影 | 伊人激情网 | 国产色女人 | 色综合天天 | 一区在线免费观看 | 欧美日韩国产一区二区在线观看 | 日韩免费观看一区二区 | 超碰在线亚洲 | 天天操天天操天天 | 天天干夜夜擦 | 91完整版在线观看 | 午夜视频在线观看网站 | 婷五月激情 | 国产伦精品一区二区三区无广告 | 91视频麻豆| 国色综合 | 亚洲综合激情 | 91色网址| 久久精品欧美一 | 国产精品一区二区久久 | 亚洲综合在线发布 | 99爱精品视频 | av三区在线 | 色激情五月 | 久久男人免费视频 | 97超碰.com| 国产精品h在线观看 | 久久在线视频精品 | 在线免费观看羞羞视频 | 亚洲网久久 | 激情视频免费在线 | 国产免费黄视频在线观看 | 婷婷在线色| 免费中午字幕无吗 | 91欧美在线| 免费看一及片 | 天天爽人人爽夜夜爽 | 成人欧美一区二区三区在线观看 | 亚洲国内精品在线 | 免费观看性生活大片3 | 国产群p视频 | 四虎在线免费观看 | 日韩激情三级 | 久操视频在线 | 欧美精品一区在线 | 国产高清在线观看av | 丝袜美腿在线 | 超碰大片| 国产色婷婷精品综合在线手机播放 | 可以免费观看的av片 | 国产伦精品一区二区三区… | 色七七亚洲影院 | 日本精品久久久久 | 成人免费在线播放视频 | 人人澡人人模 | 波多野结衣一区 | 成人a在线观看高清电影 | 综合精品在线 | 五月综合久久 | avav99| 久久国产乱| 欧美性色xo影院 | 91在线精品视频 | 97av色| 午夜久久久久久久久久影院 | 国内99视频| 国产精品第一页在线 | 国产成人福利在线观看 | 五月婷婷久| 国产亚洲精品福利 | 操久久免费视频 | 97人人澡人人添人人爽超碰 | 中文字幕国产视频 | 欧美日韩视频在线观看一区二区 | 综合色在线 | 久久精品美女视频网站 | 日本久久久久 | 午夜美女av | av免费试看 | 热久久国产精品 | 国产日韩av在线 | 九九涩涩av台湾日本热热 | 久久中文精品视频 | 亚洲精品视频中文字幕 | 91亚洲精 | 亚洲国产精品久久久久婷婷884 | 精品国产大片 | 日韩精品1区2区 | 欧美成年性 | 日韩网站在线观看 | 中文字幕久久久精品 | 中文字幕欧美三区 | 免费网站黄 | 日韩有码专区 | 亚洲美女在线一区 | 91精品日韩 | 国产又粗又猛又爽又黄的视频免费 | 欧亚久久| 久久久久久国产一区二区三区 | 色香com.| 激情综合色综合久久 | 亚洲a资源| 中文永久免费观看 | 精品福利在线观看 | 91精品视频免费看 | 西西4444www大胆视频 | 欧美网站黄色 | 色99导航| 国产91在线免费视频 | 特级a老妇做爰全过程 | 国产精品入口麻豆www | 久久久国产在线视频 | 亚洲综合视频网 | 99久久精品久久久久久清纯 | 99亚洲精品| 中文字幕黄色 | 欧美乱淫视频 | 久久艹精品 | 国产精品 国内视频 | 日韩区欧美久久久无人区 | 三级av在线播放 | 91女人18片女毛片60分钟 | 色偷偷888欧美精品久久久 | 在线亚洲日本 | 天天久久综合 | 一区二区视频免费在线观看 | 精品国产一区二区三区久久影院 | 国产一区二区精品在线 | 亚洲麻豆精品 | 国产成人精品一区二区三区在线 | 亚洲 欧美日韩 国产 中文 | 国产精品高潮久久av | 深夜福利视频在线观看 | 国内精品久久久久久久影视简单 | 国产美女免费看 | 91插插视频 | 国产成人精品一区二区在线 | 欧美日本不卡视频 | 精品国产伦一区二区三区观看体验 | 精品视频专区 | 日本精品一 | 99久久久成人国产精品 | 天天操天天干天天插 | 国产中文字幕视频在线观看 | 日韩欧美高清在线 | 黄色视屏在线免费观看 | 久久综合日| 国产成人一区二区三区久久精品 | 国产精品21区 | 黄色大片日本免费大片 | 国产精品久久久久免费观看 | 日本婷婷色 | 国产麻豆精品传媒av国产下载 | 中文字幕中文字幕在线中文字幕三区 | 欧美专区亚洲专区 | 黄色小网站免费看 | 欧美日韩精品国产 | 久久久精品久久 | 国产粉嫩在线观看 | 在线免费av网 | 天天摸夜夜添 | 97精品国产97久久久久久久久久久久 | 久草视频在线资源 | av在线观| 播五月婷婷| 亚洲天天做 | 丰满少妇在线观看资源站 | 五月综合婷 | 新版资源中文在线观看 | 国产又黄又猛又粗 | 国产精品久久久久亚洲影视 | 天天天综合| 天天射天天爽 | 国产特级毛片aaaaaa毛片 | 国产视频在线播放 | 96精品高清视频在线观看软件特色 | 亚洲成人网av | 91精品国自产在线观看 | 国产精品丝袜久久久久久久不卡 | 久久精品999 | 亚洲黄色软件 | 香蕉一区 | 欧美日韩在线看 | 激情欧美一区二区三区 | 亚洲精品永久免费视频 | 国产小视频福利在线 | 国产精品黄网站在线观看 | 免费观看黄色12片一级视频 | 免费在线观看av网址 | 激情网站 | 欧美精品乱码久久久久久 | 成人动漫一区二区三区 | 国产黄色片免费看 | 久久国产精品一二三区 | 欧美久久影院 | 久久久91精品国产一区二区三区 | 91麻豆精品国产自产在线 | 欧美另类交人妖 | 伊人久久国产 | 欧美性久久久 | 国产精品一区久久久久 | 国产精品剧情 | 免费av黄色| 久久久久久毛片 | 五月婷婷综合在线观看 | 丁香婷婷激情国产高清秒播 | 亚洲涩涩网 | 亚洲欧美日韩国产 | 色激情在线 | 免费久草视频 | 国产成人一区三区 | 狠狠干夜夜 | 五月天综合色激情 | 欧美在线不卡一区 | 国产免费三级在线观看 | 欧美精品久久久久a | 国产色婷婷精品综合在线手机播放 | 国产精品福利av | 久久久久精 | 国产成人区 | 成人黄色小说视频 | 国产99久久久久 | 免费高清在线观看电视网站 | 91热这里只有精品 | 97av在线| 精品99久久久久久 | 日韩精品免费 | 国产精品福利午夜在线观看 | 九九免费观看全部免费视频 | 91精品国产乱码久久桃 | 天天干天天操天天拍 | 国产精品入口66mio女同 | 国产91电影在线观看 | 精品福利在线视频 | 日韩精品无 | 正在播放日韩 | 国产精品自产拍在线观看中文 | av在线8| 日韩电影黄色 | www.com.黄| 成人一区不卡 | 91香蕉视频好色先生 | 国产一区二区三精品久久久无广告 | 伊人婷婷色 | 久艹视频在线观看 | 成人手机在线视频 | 久久久国产网站 | 天天操天天干天天干 | 91麻豆精品国产午夜天堂 | 国产韩国精品一区二区三区 | 黄色一级大片免费看 | 国产精品久久久久久久久久不蜜月 | 亚洲成a人片在线观看网站口工 | 欧美视频一区二 | 国产精品一区二区无线 | 激情导航 | www.色爱| 色操插| 五月婷婷电影网 | 丁香六月在线 | 在线亚洲人成电影网站色www | 久久国产精品久久精品 | 在线三级av | 六月婷婷久香在线视频 | 成人资源网 | 精品国产精品国产偷麻豆 | 五月婷婷激情网 | 欧美色操 | 国产成人精品一区二区三区福利 | 亚洲三级精品 | 中文字幕人成乱码在线观看 | 九九视频在线播放 | 黄色成品视频 | 99re在线视频观看 | 伊人五月天综合 | 九九久久免费视频 | 日韩一区二区久久 | 欧美日韩高清在线一区 | 久久视频在线观看 | 国产小视频福利在线 | 婷婷九九 | 久久这里只有精品23 |