青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-145  評論-173  文章-70  trackbacks-0

OpenCV 學習筆記

?

March 12, 2010

1. ?????? 關于數據基本類型的學習

參見代碼:

//2010 3 12 日, Demo 1?? OpenCV 的第一個例子

//author liuchang

#include <cv.h>

#include <iostream>

using namespace std;

int main()

{

???????? CvPoint p = cvPoint(1,3);// 針對整型的類型 CvPoint ,對應有構造函數 cvPoint ,注意大小寫

???????? cout << p.x << " " << p.y << endl;

???????? CvPoint2D32f p2 = cvPoint2D32f(12.34,43.45);

???????? cout << p2.x << " " << p2.y <<endl;

???????? CvPoint3D32f p3 = cvPoint3D32f(12.34,23.45,56.43);

???????? cout << p3.x << " " << p3.y << " " << p3.z << endl;

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

??? CvSize r = cvSize(3,4);??????????????????????????????????????????? // 長方形維數類型

???????? cout << r.width << " " <<r.height << endl;

???????? CvSize2D32f r2 = cvSize2D32f(23.45,34.56);

???????? cout << r2.width << " " << r2.height << endl;

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

???????? CvRect x = cvRect(3,4,12.34,45.56);

???????? cout << x.x << " " << x.y << " " << x.width << " " << x.height << endl;

?

???????? return 0;

}

總結:學習到集中基本的數據類型

1. ?????? 點的類型。包括二維和三維,而每一個坐標又可以分為整型和浮點型。其中對于二維,用 2D 來表示,對于三維,用 3D 來表示。具體的見代碼上,默認的 CvPoint 類型是一個二維的,整型參數的點。其他的見上。

2. ?????? 長方形維數類型。長方形已經固定時二維的類型,于是,形參就只用兩個,但是類型可以是整型和浮點型,于是又多了 CvSize2D32f 這種類型了。

3. ?????? 有偏移量的長方形維數類型。此時前面兩個形參就是偏移量的坐標,分別為 x y 。后面的就是寬和高了。注意,形參的類型都是整型,所以,如果像上面的代碼那樣,就會發生截斷處理,取整數部分,于是輸出結果就會有所不同。

4. ?????? 注意類型和構造函數的區別。看看,定義一個變量的時候,用的是類型,即: CvPoint,CvSize,CvRect 等等,而對這個類型的變量初始化的時候用的是對應的構造函數,于是是 cvPoint,cvSize,cvRect, 看到規律了嗎?類型的第一個首字母大寫,而構造函數則是對應的類型名的第一個字母小寫就可以了。因此, OpneCV 的這種命名方法還是很科學易記的。

附注: OpenCV 的安裝過程以及 Visual C++ 的配置方法:

1. ?????? 下載 OpenCV 并安裝。由于之前已經下載了 1.0 的版本,所以這里安裝的是 1.0 ,默認路徑安裝,并選擇注冊環境變量。

2. ?????? 檢查系統變量是否更改,盡管上面的選項可能會起作用,不過在我的系統中( Windows 7 ),環境變量還是沒有更改,于是,選擇高級系統設置 --- 環境變量 系統變量 —path— 編輯,就是在最后添加路徑 ”; C:\Program Files\OpenCV\bin”, 然后點擊確定退出。

3. ?????? 安裝完成后,并不意味著工作就結束了,還需要設定我們的編程環境。具體來說就是 Visual C++ 6.0 的設置。

?

Visual C++ 6.0 中設置 OpenCV 的步驟:

1. ?????? 選擇 tools---option, 在彈出的對話框中點擊 Directories 標簽,在 Show directories for 下拉選擇 Include files ,在 Directories 中添加路徑:

?? C:\Program Files\OpenCV\cxcore\include

?? C:\Program Files\OpenCV\cv\include

?? C:\Program Files\OpnCV\cvaux\include

?? C:\Program Files\OpenCV\otherlibs\highgui

?? C:\Program Files\OpenCV\otherlibs\cvcam\include

2. ?????? Show directories for 下拉列表框中選擇 Libarary files ,在 Directories 中添加路徑:

?? C:\Program Files\OpenCV\lib

3. ?????? Show directories for 下拉列表框中選擇 Executable files ,在 Directories 中添加路徑:

? C:\Program Files\OpenCV\bin

4. ?????? 配置完畢,退出。

?

配置完畢之后的測試程序( Demo1 ),就是前面的測試程序,編譯,運行, OK ,完全沒有問題,證明配置完畢!

?

?

?

GUI 命令

1. ?????? 使用到圖片處理,顯示,創建窗口等命令的時候,必須要在 Project—Setting 選項中設定相應的參數,否則可能會發生連接錯誤!這個不同于上面的 Demo1 ,因為 1 中僅僅是用到了一個數據類型,而沒有使用 CV 庫函數的功能,比如顯示,打開一個圖片,運用到第三方庫的話,肯定要調用 API 來實現功能,所以,鏈接庫的話,必須要加入,為此,可根據提示信息設置,一般的,進行圖像處理,都需要使用到這個。

?

2. ?????? 路徑的問題。先看看 Demo2 程序 :

#include <cv.h>

#include <highgui.h>

#include <stdio.h>

?

int main()

{

???????? IplImage* image = cvLoadImage("C:\\Users\\liuchang\\test1.bmp");

???????? if(!image){????????????????? // 如果加載失敗

?????????????????? printf("error: 導入圖片出錯,很可能是路徑出錯 !\n");

?????????????????? return 0;

???????? }

???????? cvNamedWindow("win1",CV_WINDOW_AUTOSIZE);??? // 創建一個窗口

???????? cvMoveWindow("win1",100,100);?????????? // 定位一個窗口

???????? cvShowImage("win1",image);??????????????????????????? // 在創建的窗口中顯示一個圖片

//????? cvWaitKey(0);?????????????????????????????????????? ???????? // 等待用戶輸入,否則一閃而過 , 看不到圖片

???????? cvReleaseImage(&image);????????????????????????????????? // 注意使用完后一定要釋放

???????? return 0;

}

此段程序中,功能很簡單,就是幫助用戶顯示一副圖片,運行程序,可以顯示出來一幅已經存在的圖片,而不需要任何的其他 API 來實現。在 OpenCV 中,處理圖像的函數很多,此處只是簡單的圖像顯示命令!

另外,上面的注釋很清楚的顯示了程序的各段代碼的功能,這里不再說明。對于具體的說明,后面還會繼續!需要注意的一點就是,路徑,需要兩個斜線,此處很重要,因為對于一個字符串,在作為路徑打開的時候,需要 ”\\” 才能夠被解釋為一個斜線,所以如果像上面直接給出路徑的話,需要指定是兩個斜線,否則會出錯!

OK ,下面試試從客戶端來輸入數據,即利用 main 函數可以從用戶輸入數據來編寫:

#include <cv.h>

#include <highgui.h>

#include <stdio.h>

#include <string.h>

?

int main(int argc, char **argv)

{

???????? char num[20];

???????? char getup[20];

???????? int i ;

???????? itoa(argc,num,10);

???????? puts(num);

???????? puts(argv[0]);

???????? puts(argv[1]);

???????? strcpy(getup,argv[1]);

??? for(i = 0; i < strlen(getup); i++)

?????????????????? putchar(getup[i]);

???????? putchar('\\');?????? // 輸出時一個斜線,而如果僅僅一個斜線的話,會報錯!

? ?????? IplImage* image = cvLoadImage(argv[1]);

???????? if(!image){????????????????? // 如果加載失敗

?????????????????? printf("error: 導入圖片出錯,很可能是路徑出錯 !\n");

?????????????????? return 0;

???????? }

???????? cvNamedWindow("win1",CV_WINDOW_AUTOSIZE);??? // 創建一個窗口

???????? cvMoveWindow("win1",100,100);?????????? // 定位一個窗口

???????? cvShowImage("win1",image);??????????????????????????? // 在創建的窗口中顯示一個圖片

???????? cvWaitKey(0);???????????????????????????????????????????????? // 等待用戶輸入,否則一閃而過 , 看不到圖片

???????? cvReleaseImage(&image);????????????????????????????????? // 注意使用完后一定要釋放

???????? return 0;

}

?

關于 main 函數參數的問題,在前面的說明中很清楚,不過這里需要再次說明:

首先, argc 讀入的是輸入參數的個數,比如這里輸入: test2? H:\ray.jpg ,那么讀取的 argc 的個數就是 2 ,而 argv 是一個數組,用來存放你輸入的參數,既然參數為 2 ,那么該數組就有兩個參數,一個 argv[0] ,即前面的那個程序名 test2 ,而后面的那個參數就是你讀入的那個路徑。注意的一點是:讀取后存放的路徑和你輸入的數據可能不同,具體來說就是,你輸入的是 :H:\ray.jpg ,而在機內存儲的這個字符串的內容是: H:\\ray.jpg ,也就是說,這個字符串是按照能夠正常顯示那個斜線符來設計的,也就是轉義字符設計的,讀入的數據將被轉換成正確的能夠表示的數據。從上面的驗證代碼中可以看到。

同時,計算 strlen(argv[1]) 也會發現,兩個斜線 ’\\’ 被解釋成一個字符!

對于, putchar(‘\\’) ,如果僅僅是一個斜線的話,會報錯誤,但是兩個的話就正常顯示一個 ’\’ 了。注意是表示的字符,用的單引號,所以,兩個斜線被解釋為一個字符。

Tips :如果輸入參數是: test2 H:\\ray.jpg ,還是可以正常運行的。

注記:和 C 庫函數不同,例如 open 函數,路徑是 open(“C:\test.c”,O_RDONLY); 這樣的話,里面就是一個斜線哦。所以 OpenCV 是不同的路徑寫法,一定要注意,還有上面解釋的那個輸入參數的問題,就 OK 了。

如果路徑不對,則會有下面提示信息:

H:\OPENCV\test4\test4.cpp(15) : warning C4129: 'O' : unrecognized character escape sequence

H:\OPENCV\test4\test4.cpp(15) : warning C4129: 'l' : unrecognized character escape sequence

所以,一定要加雙下劃線!

?

3. ?????? 輸入處理:

OpenCV 中如何響應鼠標事件呢?比如,如何響應點擊鼠標,如何響應鼠標被按下呢?

其實,只需要你實現下面 mouseHandler 這個方法就可以了:

void mouseHandler(int event,int x,int y,int flags, void *param)

{

???????? switch (event)

???????? {

???????? case CV_EVENT_LBUTTONDOWN:

?????????????????? if(flags & CV_EVENT_FLAG_CTRLKEY)

??????????????????????????? printf("Left button down with CTRL pressed!\n");

?????????????????? break;

???????? case CV_EVENT_LBUTTONUP:

?????????????????? printf("Left button up!\n");

?????????????????? break;

???????? }

}

那么,如何注冊鼠標監聽呢?看下面這段代碼:

???????? int mouserParam = 5;

???????? cvSetMouseCallback("win1",mouseHandler,&mouserParam);

也就是說,具體的實現監聽函數由 mouseHandler 來完成,而要注冊,也就是讓它何時監聽,監聽哪一個窗口,則需要用 cvSetMouseCallback 函數來實現,具體的參數,可查閱 API 文檔,當然,也可以由上面應用猜測出來。

上面的代碼很容易就實現了鼠標被點擊并且同時按下 CTRL 鍵的監聽動作和鼠標釋放的動作,當然,你還可以實現更多的功能,具體的就是使用 event 的判斷,以及和 flags 聯合實現的復合鍵判斷!

?

?

4. ?????? 前面講到了如何實現監聽鼠標事件,那么這里講下如何監聽鍵盤事件:

看看下面的代碼:

???????? int key ;

???????? key = cvWaitKey(0);????????????????????????????

???????? if(key == 'q'){

?????????????????? printf("quit\n");

?????????????????? return 0;

???????? }

上面這段代碼的意思就是不斷的等待輸入,如果輸入時 q 的話就退出程序,實驗之,發現有用。從這里引申下幾點:

(1) ?????? 對于 cvWaitKey 函數的參數,就是等待的毫秒數,如果是 0 ,則表示不斷的等待輸入,進入一個循環。而它的返回值,就是你按下的按鈕的鍵值。當然,如果要等待一定的時間,如果沒有輸入還是退出的話,可以采用 cvWaitKey(1000) 這樣的具體參數,這樣在等待的過程沒有輸入的話,還是可以正常退出,而不是想前面的循環在那里。

(2) ?????? 如果要實現不斷循環的話,可以采用下面的這個形式:

while(1){

?? key = cvWaitKey(10);

?? if(key == 27)

??????????? break;

?? switch(key){

?? case 'h':

??????????? break;

?? case 'i':

??????????? break;

?? }

}

這種方式也很好的實現了循環等待多重輸入的形式。

?

?

5. ?????? 如何處理拖動條事件:

上圖即拖動條,如何創建并響應該事件呢?

1. ?????? 創建:

int trackbarVal = 25;

int maxVal = 100;

cvCreateTrackbar("bar1","win1",&trackbarVal,maxVal,trackbarHandler);

這樣就設置了一個名稱為 bar1 的拖動條。

2. ?????? 響應事件:利用函數 trackbarHandler 來實現

void trackbarHandler(int pos)

{

printf("Trackbar position: %d\n",pos);

}

注意這個監聽是自動的。也就是說不需要自己進行任何的注冊,只要創建了,并且寫了這個函數,就可以實現自動的監聽,因為,在創建的函數中,最后的一個參數就是一個監聽的函數。

?

附記:完整的代碼如下:

#include <cv.h>

#include <highgui.h>

#include <stdio.h>

#include <string.h>

?

void mouseHandler(int event,int x,int y,int flags, void *param)

{

???????? switch (event)

???????? {

???????? case CV_EVENT_LBUTTONDOWN:

?????????????????? if(flags & CV_EVENT_FLAG_CTRLKEY)

??????????????????????????? printf("Left button down with CTRL pressed!\n");

?????????????????? break;

???????? case CV_EVENT_LBUTTONUP:

?????????????????? printf("Left button up!\n");

?????????????????? break;

???????? }

}

?

void trackbarHandler(int pos)

{

???????? printf("Trackbar position: %d\n",pos);

}

?

int main(int argc, char **argv)

{

// ??? char num[20];

// ??? char getup[20];

// ??? int i ;

// ??? itoa(argc,num,10);

// ??? puts(num);

// ??? puts(argv[0]);

// ??? puts(argv[1]);

// ??? strcpy(getup,argv[1]);

//???? for(i = 0; i < strlen(getup); i++)

// ???????????? putchar(getup[i]);

// ??? putchar('\\');

? ?????? IplImage* image = cvLoadImage(argv[1]);

???????? if(!image){????????????????? // 如果加載失敗

?????????????????? printf("error: 導入圖片出錯,很可能是路徑出錯 !\n");

?????????????????? return 0;

???????? }

???????? cvNamedWindow("win1",CV_WINDOW_AUTOSIZE);??? // 創建一個窗口

???????? cvMoveWindow("win1",100,100);?????????? // 定位一個窗口

???????? cvShowImage("win1",image);??????????????????????????? // 在創建的窗口中顯示一個圖片

// ??? int mouserParam = 5;

// ??? cvSetMouseCallback("win1",mouseHandler,&mouserParam);

// ??? int key ;

// ??? key = cvWaitKey(0);???????????????????????????? // 等待輸入,等待時間為 1000ms

// ??? if(key == 'q'){

// ???????????? printf("quit\n");

// ???????????? return 0;

// ??? }

???????? int trackbarVal = 25;

???????? int maxVal = 100;

???????? cvCreateTrackbar("bar1","win1",&trackbarVal,maxVal,trackbarHandler);

//????? int pos = cvGetTrackbarPos("bar1","win1");

//? int pos = cvGetTrackbarPos("bar1","win1");

//????? cvSetTrackbarPos("bar1","win1",25);

?

???????? cvWaitKey(0);???????????????????????????????????????????????? // 等待用戶輸入,否則一閃而過 , 看不到圖片

???????? cvReleaseImage(&image);????????????????????????????????? // 注意使用完后一定要釋放

???????? return 0;

}

?

posted on 2010-03-16 13:21 deercoder 閱讀(10825) 評論(7)  編輯 收藏 引用 所屬分類: OpenCV

評論:
# re: OpenCV學習筆記(一) 2010-03-16 17:03 | anon
建議支持學2.0  回復  更多評論
  
# re: OpenCV學習筆記(一) 2010-03-16 22:03 | 劉暢
@anon
謝謝,以前裝過2.0,不過嫌配置比較復雜就沒有做了,貌似最近官方網站有說明,有時間去看看。  回復  更多評論
  
# re: OpenCV學習筆記(一) 2010-03-29 00:30 | df
建議使用VC Express, 2005,2008,2010都好,因為VC6和C++標準不相容,編譯調試過程中可能會出現一些不可預知的問題。另外,新的OpenCV對C++增強不少,建議看看。  回復  更多評論
  
# re: OpenCV學習筆記(一) 2010-03-29 11:50 | 劉暢
@df
謝謝,有時間一定看看。  回復  更多評論
  
# re: OpenCV學習筆記(一) 2010-06-09 16:17 | Forsure
你好,文章寫得非常的好,雖然很早就學習了這些基礎內容,不過今天看了你的覺得還是收獲不少,我最近又回來搞opencv,希望可以一起討論交流。我的郵箱luanwpp#163.com,#號換成@。期待  回復  更多評論
  
# re: OpenCV學習筆記(一) 2011-04-29 23:55 | 鄭鄭鄭
"
4. 注意類型和構造函數的區別。看看,定義一個變量的時候,用的是類型,即: CvPoint,CvSize,CvRect 等等,而對這個類型的變量初始化的時候用的是對應的構造函數,于是是 cvPoint,cvSize,cvRect, 看到規律了嗎?類型的第一個首字母大寫,而構造函數則是對應的類型名的第一個字母小寫就可以了。因此, OpneCV 的這種命名方法還是很科學易記的。
"
cvPoint,cvSize,cvRect是構造函數?應該是結構體吧  回復  更多評論
  
# re: OpenCV學習筆記(一) 2011-05-25 10:38 | 劉暢
@鄭鄭鄭
CvPoint Point1; //類型
cvPoint() //構造函數
初始化CvPoint資料結構,為OpenCV常用資料結構
cvPoint(int型別row,int型別colunm)   回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中文在线一区| 免费人成精品欧美精品| 免费在线欧美视频| 蜜桃av一区二区在线观看| 亚洲精品久久久久| aⅴ色国产欧美| 国产嫩草一区二区三区在线观看| 欧美在线观看一二区| 尤物精品在线| 亚洲福利视频在线| 欧美激情一二三区| 性久久久久久| 久久综合中文字幕| 亚洲午夜一区二区三区| 欧美在线精品一区| 亚洲激情啪啪| 亚洲专区在线| 亚洲激情偷拍| 亚洲欧美日韩人成在线播放| 亚洲国产经典视频| 中文一区二区| 亚洲国产视频一区二区| 亚洲午夜精品一区二区三区他趣| 国产一区二区三区不卡在线观看| 亚洲成人资源| 国产乱码精品| 亚洲人成小说网站色在线| 国产人成一区二区三区影院| 亚洲韩国日本中文字幕| 国产欧美日韩另类一区| 亚洲国产欧美一区二区三区久久 | 欧美在线免费视屏| 免费欧美视频| 久久中文字幕导航| 国产精品久久激情| 亚洲国产美女| 精品动漫av| 亚洲免费在线观看| 中文亚洲视频在线| 免费观看国产成人| 美女国内精品自产拍在线播放| 国产精品v亚洲精品v日韩精品| 欧美电影免费观看| 黄色精品一区二区| 午夜精品短视频| 亚洲欧美激情视频| 欧美日韩在线播放一区二区| 亚洲高清视频的网址| 国外成人免费视频| 欧美一级理论片| 香蕉免费一区二区三区在线观看| 欧美精品乱码久久久久久按摩| 久久综合九色综合久99| 国产日韩亚洲| 欧美一级专区| 久久精品国产精品| 国产一区二区毛片| 午夜精品久久久久久久蜜桃app | 欧美在线三区| 久久国内精品视频| 久久久久久久久久久久久9999 | 欧美大学生性色视频| 一区二区三区在线视频观看| 午夜精品福利在线观看| 欧美在线观看视频一区二区| 国产精品视频免费观看www| 99国产精品99久久久久久| 一区二区三区欧美日韩| 国产精品成人v| 亚洲一品av免费观看| 欧美一区二区三区免费观看| 国产精品网站在线观看| 性欧美精品高清| 久久久精品五月天| 136国产福利精品导航| 欧美不卡视频一区| 99re成人精品视频| 先锋影音国产精品| 黑丝一区二区三区| 老司机一区二区| 亚洲精选成人| 香蕉av777xxx色综合一区| 国产亚洲成精品久久| 久久青草福利网站| 亚洲精品你懂的| 欧美在线视频日韩| 亚洲国产高清一区二区三区| 欧美日韩不卡| 午夜在线播放视频欧美| 欧美91视频| 亚洲一区二区网站| 精品成人在线| 欧美日韩一区二区三区免费| 先锋影音国产一区| 亚洲国产成人久久综合| 亚洲欧美日韩国产综合| 亚洲高清自拍| 国产精品乱码一区二区三区| 另类av导航| 在线视频中文亚洲| 欧美 日韩 国产一区二区在线视频 | 亚洲线精品一区二区三区八戒| 国产午夜精品视频| 欧美精品国产精品日韩精品| 性做久久久久久久久| 亚洲人成人一区二区三区| 久久久久久9| 亚洲视频在线视频| 亚洲国产精品va在看黑人| 国产精品视频导航| 欧美日韩国产色视频| 久久久99爱| 亚洲一二三区视频在线观看| 亚洲国产精品美女| 久久久精品日韩| 亚洲欧美伊人| 一区二区三区色| 亚洲人成在线观看网站高清| 国产日韩欧美不卡| 国产精品日产欧美久久久久| 免费在线亚洲| 久久亚洲欧洲| 久久久久久久一区二区三区| 亚洲免费影视第一页| 在线视频欧美日韩| 亚洲免费成人av电影| 久久久精品一区| 欧美激情一区二区久久久| 99视频精品全部免费在线| 欧美大片在线看免费观看| 久久亚洲不卡| 久久免费视频这里只有精品| 欧美一级大片在线免费观看| 亚洲手机成人高清视频| 亚洲特级毛片| 亚洲一区二区三区国产| 一区二区三区不卡视频在线观看| 亚洲经典在线看| 亚洲精品日韩激情在线电影| 亚洲国产欧美一区二区三区丁香婷| 伊人久久亚洲美女图片| 尤物yw午夜国产精品视频明星| 樱桃视频在线观看一区| 亚洲电影免费观看高清完整版在线| 在线观看日韩www视频免费| 精品999在线观看| 在线欧美福利| 亚洲精品一二三区| 亚洲一本视频| 欧美一区二区三区四区在线观看地址 | 欧美一区二区三区视频免费| 欧美在线地址| 久久一本综合频道| 亚洲第一狼人社区| 亚洲精品影视| 午夜精品久久久久久久99黑人| 欧美影院在线播放| 美女日韩在线中文字幕| 欧美激情在线| 国产精品入口日韩视频大尺度| 国产亚洲欧洲997久久综合| 悠悠资源网亚洲青| 99精品视频免费全部在线| 亚洲欧美日韩综合| 久久精品国产久精国产思思| 嫩草影视亚洲| 亚洲五月婷婷| 美女视频黄免费的久久| 欧美日韩在线一区| 国产日韩欧美亚洲| 亚洲激情自拍| 欧美一区二区视频免费观看| 欧美波霸影院| 亚洲一区二区毛片| 麻豆精品传媒视频| 国产精品视频不卡| 亚洲精品麻豆| 久久精品男女| 99国内精品久久| 久久久久久久一区二区三区| 欧美日韩在线高清| 在线观看欧美精品| 亚洲欧美综合v| 91久久久精品| 久久久综合网站| 国产精品久久久久9999吃药| 国模私拍一区二区三区| 一本大道久久精品懂色aⅴ | 欧美一级理论片| 亚洲黄页视频免费观看| 久久精品99久久香蕉国产色戒| 欧美日韩免费观看一区二区三区| 国产一区二区三区四区在线观看| 日韩视频中午一区| 久久综合伊人77777麻豆| 亚洲无亚洲人成网站77777| 欧美电影免费| 1024国产精品| 开元免费观看欧美电视剧网站| 亚洲曰本av电影|