標籤: 台北網頁設計

  • OpenCV開發筆記(六十五):紅胖子8分鐘帶你深入了解ORB特徵點(圖文並茂+淺顯易懂+程序源碼)

    OpenCV開發筆記(六十五):紅胖子8分鐘帶你深入了解ORB特徵點(圖文並茂+淺顯易懂+程序源碼)

    若該文為原創文章,未經允許不得轉載
    原博主博客地址:https://blog.csdn.net/qq21497936
    原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
    本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106926496
    各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼自己研究
    紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)

    OpenCV開發專欄(點擊傳送門)

    上一篇:《OpenCV開發筆記(六十四):紅胖子8分鐘帶你深入了解SURF特徵點(圖文並茂+淺顯易懂+程序源碼)》
    下一篇:持續補充中…

     

    前言

      紅胖子,來也!
      識別除了傳統的模板匹配之外就是體征點了,前面介紹了Suft特徵點,還有一個傳統的就會ORB特徵點了。
      其實識別的特徵點多種多樣,既可以自己寫也可以使用opencv為我們提供的,一般來說根據特徵點的特性和效率,選擇適合我們場景的特徵就可以了。
      本篇,介紹ORB特徵提取。

     

    Demo

      
      
      
      

     

    ORB特徵點

    概述

      ORB是ORiented Brief的簡稱,是briedf算法的改進版,於2011年在《ORB:an fficient alternative to SIFT or SURF》中提出。
    ORB算法分為兩部分,分別是特徵點提取和特徵點描述:

    • 特徵提取:由FAST(Features from Accelerated Segment Test)算法發展來的;
    • 特徵點描述:根據BRIEF(Binary Robust IndependentElementary Features)特徵描述算法改進的。

      ORB特徵是將FAST特徵點的檢測方法與BRIEF特徵描述子結合起來,並在它們原來的基礎上做了改進與優化。據說,ORB算法的速度是sift的100倍,是surf的10倍。

    Brief描述子

      該特徵描述子是在特徵點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,組合成一個二進制傳,並將這個二進制串作為該特徵點的特徵描述子。
      Brief的速度快,但是使用灰度值作為描述字計算的源頭,毫無疑問會有一些顯而易見的問題:

    • 旋轉后灰度變了導致無法識別,因其不具備旋轉不變形;
    • 由於是計算灰度,噪聲灰度化則無法去噪,所以對噪聲敏感;
    • 尺度不同影響灰度計算,所以也不具備尺度不變形;
      ORB是試圖使其具備旋轉不變性和降低噪聲敏感度而提出的。

    特徵檢測步驟

    步驟一:使用brief算子的方式初步提取。

      該步能夠提取大量的特徵點,但是有很大一部分的特徵點的質量不高。從圖像中選取一點P,以P為圓心畫一個半徑為N像素半徑的圓。圓周上如果有連續n個像素點的灰度值比P點的灰度值大或者小,則認為P為特徵點。
      

    步驟二:機器學習的方法篩選最優特徵點。

      通俗來說就是使用ID3算法訓練一個決策樹,將特徵點圓周上的16個像素輸入決策樹中,以此來篩選出最優的FAST特徵點。

    步驟三:非極大值抑制去除局部較密集特徵點。

      使用非極大值抑制算法去除臨近位置多個特徵點的問題。為每一個特徵點計算出其響應大小。計算方式是特徵點P和其周圍16個特徵點偏差的絕對值和。在比較臨近的特徵點中,保留響應值較大的特徵點,刪除其餘的特徵點。

    步驟四:使用金字塔來實現多尺度不變形。

    步驟五:使用圖像的矩判斷特徵點的旋轉不變性

      ORB算法提出使用矩(moment)法來確定FAST特徵點的方向。也就是說通過矩來計算特徵點以r為半徑範圍內的質心,特徵點坐標到質心形成一個向量作為該特徵點的方向。

    ORB類的使用

    cv::Ptr<cv::ORB> _pOrb = cv::ORB::create();
    std::vector<cv::KeyPoint> keyPoints1;
    //特徵點檢測
    _pOrb->detect(srcMat, keyPoints1);
    

    ORB相關函數原型

    static Ptr<ORB> create(int nfeatures=500,
                           float scaleFactor=1.2f,
                           int nlevels=8,
                           int edgeThreshold=31,
                           int firstLevel=0,
                           int WTA_K=2,
                           int scoreType=ORB::HARRIS_SCORE,
                           int patchSize=31,
                           int fastThreshold=20);
    
    • 參數一:int類型的nfeatures,用於ORB的,保留最大的關鍵點數,默認值500;
    • 參數二:float類型的scaleFactor,比例因子,大於1時為金字塔抽取比。的等於2表示經典的金字塔,每一個下一層的像素比上一層少4倍,但是比例係數太大了將顯著降低特徵匹配分數。另一方面,太接近1個比例因子這意味着要覆蓋一定的範圍,你需要更多的金字塔級別,所以速度會受影響的,默認值1.2f;
    • 參數三:int類型的nlevels,nlevels金字塔級別的數目。最小級別的線性大小等於輸入圖像線性大小/功率(縮放因子,nlevels-第一級),默認值為8;
    • 參數四:int類型的edgeThreshold,edgeThreshold這是未檢測到功能的邊框大小。它應該大致匹配patchSize參數。;
    • 參數五:int類型的firstLevel,要將源圖像放置到的金字塔級別。以前的圖層已填充使用放大的源圖像;
    • 參數六:int類型的WTA_K,生成定向簡短描述符的每個元素的點數。這個默認值2是指取一個隨機點對並比較它們的亮度,所以我們得到0/1的響應。其他可能的值是3和4。例如,3表示我們取3隨機點(當然,這些點坐標是隨機的,但是它們是由預定義的種子,因此簡短描述符的每個元素都是從像素確定地計算出來的矩形),找到最大亮度點和獲勝者的輸出索引(0、1或2)。如此輸出將佔用2位,因此需要一個特殊的漢明距離變量,表示為NORM_HAMMING2(每箱2位)。當WTA_K=4時,我們取4個隨機點計算每個點bin(也將佔用可能值為0、1、2或3的2位)。;
    • 參數七:int類型的scoreType,HARRIS_SCORES表示使用HARRIS算法對特徵進行排序(分數寫入KeyPoint::score,用於保留最佳nfeatures功能);FAST_SCORE是產生稍微不穩定關鍵點的參數的替代值,但計算起來要快一點;
    • 參數八:int類型的patchSize,定向簡短描述符使用的修補程序的大小。當然,在較小的金字塔層特徵覆蓋的感知圖像區域將更大;
    • 參數九:int類型的fastThreshold,快速閾值;
    void xfeatures2d::SURT::detect( InputArray image,
                                    std::vector<KeyPoint>& keypoints,
                                    InputArray mask=noArray() );
    
    • 參數一:InputArray類型的image,輸入cv::Mat;
    • 參數二:std::Vector類型的keypoints,檢測到的關鍵點;
    • 參數三:InputArray類型的mask,默認為空,指定在何處查找關鍵點的掩碼(可選)。它必須是8位整數感興趣區域中具有非零值的矩陣。;
    void xfeatures2d::SURT::compute( InputArray image,
                                     std::vector<KeyPoint>& keypoints,
                                     OutputArray descriptors );
    
    • 參數一:InputArray類型的image,輸入cv::Mat;
    • 參數二:std::Vector類型的keypoints,描述符不能為其已刪除計算的。有時可以添加新的關鍵點,例如:SIFT duplicates keypoint有幾個主要的方向(每個方向);
    • 參數三:OutputArray類型的descriptors,計算描述符;
    // 該函數結合了detect和compute,參照detect和compute函數參數
    void xfeatures2d::SURT::detectAndCompute( InputArray image,
                                              InputArray mask,
                                              std::vector<KeyPoint>& keypoints,
                                              OutputArray descriptors,
                                              bool useProvidedKeypoints=false );
    

    繪製關鍵點函數原型

    void drawKeypoints( InputArray image,
                        const std::vector<KeyPoint>& keypoints,
                        InputOutputArray outImage,
                        const Scalar& color=Scalar::all(-1),
                        int flags=DrawMatchesFlags::DEFAULT );
    
    • 參數一:InputArray類型的image,;
    • 參數二:std::Vector類型的keypoints,原圖的關鍵點;
    • 參數三:InputOutputArray類型的outImage,其內容取決於定義在輸出圖像。請參閱參數五的標誌flag);
    • 參數四:cv::Scalar類型的color,繪製關鍵點的顏色,默認為Scalar::all(-1)隨機顏色,每個點都是這個顏色,那麼隨機時,每個點都是隨機的;
    • 參數五:int類型的flags,默認為DEFAULT,具體參照DrawMatchesFlags枚舉如下:

     

    相關博客

      本源碼中包含了“透視變換”,請參照博文《OpenCV開發筆記(五十一):紅胖子8分鐘帶你深入了解透視變換(圖文並茂+淺顯易懂+程序源碼)》

     

    特徵點總結

      根據前面連續三篇的特徵點,我們其實可以猜到了所有的匹配都是這樣提取特徵點,然後使用一些算法來匹配,至於使用什麼特徵點提取就是需要開發者根據實際的經驗去選取,單一的特徵點/多種特徵點提取混合/自己寫特徵點等等多種方式去提取特徵點,為後一步的特徵點匹配做準備,特徵點通用的就到此篇,後續會根據實際開發項目中使用的到隨時以新的篇章博文去補充。
      《OpenCV開發筆記(六十三):紅胖子8分鐘帶你深入了解SIFT特徵點(圖文並茂+淺顯易懂+程序源碼)》
      《OpenCV開發筆記(六十四):紅胖子8分鐘帶你深入了解SURF特徵點(圖文並茂+淺顯易懂+程序源碼》
      《OpenCV開發筆記(六十五):紅胖子8分鐘帶你深入了解ORB特徵點(圖文並茂+淺顯易懂+程序源碼)》

     

    Demo源碼

    void OpenCVManager::testOrbFeatureDetector()
    {
        QString fileName1 = "13.jpg";
        int width = 400;
        int height = 300;
    
        cv::Mat srcMat = cv::imread(fileName1.toStdString());
        cv::resize(srcMat, srcMat, cv::Size(width, height));
    
        cv::String windowName = _windowTitle.toStdString();
        cvui::init(windowName);
    
        cv::Mat windowMat = cv::Mat(cv::Size(srcMat.cols * 2, srcMat.rows * 3),
                                    srcMat.type());
        cv::Ptr<cv::ORB> _pObr = cv::ORB::create();
    
        int k1x = 0;
        int k1y = 0;
        int k2x = 100;
        int k2y = 0;
        int k3x = 100;
        int k3y = 100;
        int k4x = 0;
        int k4y = 100;
        while(true)
        {
            windowMat = cv::Scalar(0, 0, 0);
    
            cv::Mat mat;
    
            // 原圖先copy到左邊
            mat = windowMat(cv::Range(srcMat.rows * 1, srcMat.rows * 2),
                            cv::Range(srcMat.cols * 0, srcMat.cols * 1));
            cv::addWeighted(mat, 0.0f, srcMat, 1.0f, 0.0f, mat);
    
            {
                std::vector<cv::KeyPoint> keyPoints1;
                std::vector<cv::KeyPoint> keyPoints2;
    
                cvui::printf(windowMat, 0 + width * 1, 10 + height * 0, "k1x");
                cvui::trackbar(windowMat, 0 + width * 1, 20 + height * 0, 165, &k1x, 0, 100);
                cvui::printf(windowMat, 0 + width * 1, 70 + height * 0, "k1y");
                cvui::trackbar(windowMat, 0 + width * 1, 80 + height * 0, 165, &k1y, 0, 100);
    
                cvui::printf(windowMat, width / 2 + width * 1, 10 + height * 0, "k2x");
                cvui::trackbar(windowMat, width / 2 + width * 1, 20 + height * 0, 165, &k2x, 0, 100);
                cvui::printf(windowMat, width / 2 + width * 1, 70 + height * 0, "k2y");
                cvui::trackbar(windowMat, width / 2 + width * 1, 80 + height * 0, 165, &k2y, 0, 100);
    
                cvui::printf(windowMat, 0 + width * 1, 10 + height * 0 + height / 2, "k3x");
                cvui::trackbar(windowMat, 0 + width * 1, 20 + height * 0 + height / 2, 165, &k3x, 0, 100);
                cvui::printf(windowMat, 0 + width * 1, 70 + height * 0 + height / 2, "k3y");
                cvui::trackbar(windowMat, 0 + width * 1, 80 + height * 0 + height / 2, 165, &k3y, 0, 100);
    
                cvui::printf(windowMat, width / 2 + width * 1, 10 + height * 0 + height / 2, "k4x");
                cvui::trackbar(windowMat, width / 2 + width * 1, 20 + height * 0 + height / 2, 165, &k4x, 0, 100);
                cvui::printf(windowMat, width / 2 + width * 1, 70 + height * 0 + height / 2, "k4y");
                cvui::trackbar(windowMat, width / 2 + width * 1, 80 + height * 0 + height / 2, 165, &k4y, 0, 100);
    
                std::vector<cv::Point2f> srcPoints;
                std::vector<cv::Point2f> dstPoints;
    
                srcPoints.push_back(cv::Point2f(0.0f, 0.0f));
                srcPoints.push_back(cv::Point2f(srcMat.cols - 1, 0.0f));
                srcPoints.push_back(cv::Point2f(srcMat.cols - 1, srcMat.rows - 1));
                srcPoints.push_back(cv::Point2f(0.0f, srcMat.rows - 1));
    
                dstPoints.push_back(cv::Point2f(srcMat.cols * k1x / 100.0f, srcMat.rows * k1y / 100.0f));
                dstPoints.push_back(cv::Point2f(srcMat.cols * k2x / 100.0f, srcMat.rows * k2y / 100.0f));
                dstPoints.push_back(cv::Point2f(srcMat.cols * k3x / 100.0f, srcMat.rows * k3y / 100.0f));
                dstPoints.push_back(cv::Point2f(srcMat.cols * k4x / 100.0f, srcMat.rows * k4y / 100.0f));
    
                cv::Mat M = cv::getPerspectiveTransform(srcPoints, dstPoints);
                cv::Mat srcMat2;
                cv::warpPerspective(srcMat,
                                    srcMat2,
                                    M,
                                    cv::Size(srcMat.cols, srcMat.rows),
                                    cv::INTER_LINEAR,
                                    cv::BORDER_CONSTANT,
                                    cv::Scalar::all(0));
    
                mat = windowMat(cv::Range(srcMat.rows * 1, srcMat.rows * 2),
                                cv::Range(srcMat.cols * 1, srcMat.cols * 2));
                cv::addWeighted(mat, 0.0f, srcMat2, 1.0f, 0.0f, mat);
    
                //特徵點檢測
                _pObr->detect(srcMat, keyPoints1);
                //繪製特徵點(關鍵點)
                cv::Mat resultShowMat;
                cv::drawKeypoints(srcMat,
                                 keyPoints1,
                                 resultShowMat,
                                 cv::Scalar(0, 0, 255),
                                 cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
                mat = windowMat(cv::Range(srcMat.rows * 2, srcMat.rows * 3),
                                cv::Range(srcMat.cols * 0, srcMat.cols * 1));
                cv::addWeighted(mat, 0.0f, resultShowMat, 1.0f, 0.0f, mat);
    
                //特徵點檢測
                _pObr->detect(srcMat2, keyPoints2);
                //繪製特徵點(關鍵點)
                cv::Mat resultShowMat2;
                cv::drawKeypoints(srcMat2,
                                 keyPoints2,
                                 resultShowMat2,
                                 cv::Scalar(0, 0, 255),
                                 cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
                mat = windowMat(cv::Range(srcMat.rows * 2, srcMat.rows * 3),
                               cv::Range(srcMat.cols * 1, srcMat.cols * 2));
                cv::addWeighted(mat, 0.0f, resultShowMat2, 1.0f, 0.0f, mat);
    
                cv::imshow(windowName, windowMat);
            }
            // 更新
            cvui::update();
            // 显示
            // esc鍵退出
            if(cv::waitKey(25) == 27)
            {
                break;
            }
        }
    }
    

     

    工程模板:對應版本號v1.59.0

      對應版本號v1.59.0

     

    上一篇:《OpenCV開發筆記(六十四):紅胖子8分鐘帶你深入了解SURF特徵點(圖文並茂+淺顯易懂+程序源碼)》
    下一篇:持續補充中…

     

    原博主博客地址:https://blog.csdn.net/qq21497936
    原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
    本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106926496

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

  • 緬甸小象成功獲救 凸顯盜獵危機仍在

    摘錄自2019年10月2日自由時報報導

    據《路透》報導,緬甸Wingabaw大象庇護營上個月在該國西南部森林,拯救了一隻誤入盜獵者陷阱的4個月大幼象,她的左前腿遭陷阱夾傷,父母推測也慘遭盜獵者殺害。

    現在這隻被命名為艾雅‧賽恩(Ayeyar Sein),雖然腳上還戴著以竹子和繃帶做成的夾板,但在定期清理傷口之下,賽恩的恢復狀況良好,食慾也逐漸恢復正常。

    據專家2018年統計報告指出,目前緬甸僅存1400至2000頭野生象,並有5000頭大象遭囚禁,凸顯出緬甸所面臨的盜獵危機。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※帶您來了解什麼是 USB CONNECTOR  ?

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

    ※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※教你寫出一流的銷售文案?

  • 氣候變遷衝擊農民生計 菲青年下鄉助行銷轉型

    摘錄自2019年10月2日中央社報導

    菲律賓存在乾季和雨季,但氣候變遷改變降雨季節,衝擊農民生計。為此,25名菲律賓青年創業家組成的「根源聯合會」(Roots Collective)與「和平與公平基金會」(Peace and Equity Foundation)合作,即日起到6日在位於大馬尼拉「波尼法西奧堡環球城」(BGC)的商場展售在地農民、手工藝工作者與社會企業合作開發的織品、包包、鞋子、食品及日用品。

    青年創業家佛蘭查(John Francia)與夥伴創立「編織工藝」(Woven Crafts),行銷販售來自菲律賓東部薩馬省(Samar)巴席鎮(Basey)的織品,並開發出筆電包、手拿包、化妝包等新產品。佛蘭查說,他們正把觸角延伸到民答那峨島和2017年受叛亂襲擊的馬拉韋市(Marawi)等地,希望開發新的工藝素材,幫助更多菲律賓貧困社區提高收入、脫離貧窮。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※台北網頁設計公司全省服務真心推薦

    ※想知道最厲害的網頁設計公司"嚨底家"!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※推薦評價好的iphone維修中心

  • 布袋蓮洗刷惡名 成為肯亞再生能源金礦

    摘錄自2019年9月30日聯合報報導

    布袋蓮為原產於南美洲的水生植物,20世紀初首次出現於非洲。自從布袋蓮開始在1900年從南非開普敦開始向外蔓延,並開始堵塞主要水壩和河流後,科學家稱它為「世界最嚴重的水生雜草」。布袋蓮常因阻塞重要水道且難以根除而遭到敵視,但它在非洲肯亞卻有助提供更乾淨的能源,進而保護居民健康。

    英國衛報報導,在肯亞基蘇木郡(Kisumu)維多利亞湖的Winam灣岸邊附近,大量布袋蓮腐爛在湖邊,但那些逐漸腐壞的蠟質葉片卻是可再生能源的金礦。事實證明,布袋蓮不僅繁殖能力出眾,它的葉子還含有高比例的碳和氮。早期研究預測,僅約4公斤的乾燥布袋蓮,就能滿足一個大家庭的日常能源需求。

    肯亞學者證實,布袋蓮能將有機物轉化為甲烷(沼氣的主要成分)、二氧化碳及水。因為沼氣容易燃燒,一般天然氣能做的事情它都能辦到,像是煮飯、加熱或作為動力來源。Dunga村2018年獲贈兩個沼氣池,能為村莊60%人口提供服務,現在肯亞約有50個沼氣池。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

    ※評比南投搬家公司費用收費行情懶人包大公開

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※回頭車貨運收費標準

  • 沒有廁所的大廈──日本核廢燃料棒處理概況

    文:宋瑞文

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 用廢棄物鋪路 越南首條回收塑膠道路啟用

    摘錄自2019年10月3日中央社報導

    越南第一條用廢棄塑膠鋪成的200公尺長道路日前在海防市啟用。這項以廢棄塑膠鋪路的提案由DOW CHEMICAL VIETNAM公司、海防市(Hai Phong)廷武(Dinh Vu)工業區(Deep C)開發商與越南航海大學等單位合作展開,其中第一階段在這個工業區內完成興建以廢棄塑膠鋪成的200公尺長道路。

    越南媒體報導,大量回收塑膠廢棄物由當地環保單位提供,經清洗、烘乾與壓碎後,在攝氏150至180度的溫度下與瀝青混合,隨後用來鋪路;這個塑膠和瀝青混合的材料,有利提升道路耐用度。

    越南商工總會(VCCI)表示,塑膠廢棄物處理的新出路符合於越南政府所提出經濟永續發展政策以及「全國反對塑膠垃圾行動」,這個模式應在各其他地方擴大實施。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!

  • 中國新鑽井平台是否進入南海 越南密切關注

    摘錄自2019年10月3日中央社報導

    中國新鑽井平台「海洋石油982」傳出在海上準備運作,或許會在南海使用。越南政府今天表示,正在查證這個消息,強調各方在南海的任何行動都要遵守1982年聯合國海洋法公約。

    越南外交部今天在河內舉行例行記者會,發言人黎氏秋恆(Le Thi Thu Hang)回答記者提問時表示,越南相關部門密切關注且正在查證中華人民共和國可能將「海洋石油982」鑽井平台駛入南海海域(越稱東海)的消息。

    黎氏秋恆說:「越南認為,(各方)在東海的任何行動都要遵守1982年聯合國海洋法公約,包括遵守沿海國家主權、主權權利和管轄權在內,為維護區域和平與穩定做出切實貢獻。」

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    南投搬家公司費用需注意的眉眉角角,別等搬了再說!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※教你寫出一流的銷售文案?

  • 科學家發現具有三類性別的線蟲 砷耐受性極高

    環境資訊中心綜合外電;姜唯 編譯;林大利 審校

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※想知道最厲害的網頁設計公司"嚨底家"!

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※別再煩惱如何寫文案,掌握八大原則!

  • 南北韓非軍事區 驚見野豬患有非洲豬瘟

    摘錄自2019年10月4日自由時報報導

    據報導,北韓於5月份出現首起非洲豬瘟病例,韓國則努力地避免疫情擴散過來,甚至在邊界建起圍欄。韓國各處養豬場已確認有13起病例,不過,長4公里、佈滿地雷、守衛嚴密的南北韓非軍事區(DMZ)更發現患有非洲豬瘟的野豬,目前推測韓國的疫情可能是被帶原的野豬給傳染過來的。

    DMZ向來避免擦槍走火,但韓國軍方已被授權殺死穿越DMZ的野豬。

     

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 米塔颱風襲南韓已釀9死 日本高知暴雨淹大水

    摘錄自2019年10月3日自由時報報導

    米塔颱風在週三晚間襲擊南韓南部,南韓南部港口城市釜山發生土石流,南韓行政安全部3日表示,截至下午,全國共有9人喪生,但傷亡人數預計會在攀升,因為還有數人下落不明。

    南韓國防部表示,米塔風災造成1000多棟房屋損壞,超過1500人提前被撤離。

    米塔離開朝鮮半島後,已往日本西部前進,同樣帶來驚人雨量,日本氣象廳警告,儘管米塔颱風可能在4日減弱為溫帶氣旋,但朝著日本北部前進時,強風豪雨可能引發洪水、土石流等災情。

    【動画】高知県内で大雨 道路冠水も

    — 高知新聞 (公式)Kochinews (@Kochi_news)

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?