日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频

發(fā)布時(shí)間:2024/1/1 Ubuntu 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 一、安裝opencv
      • 1、前置安裝條件
      • 2.安裝環(huán)境
      • 3.下載opencv3.4.11
      • 4.解壓安裝包
      • 5.開始安裝
      • 6.檢查是否安裝成功
  • 二、顯示圖片和播放視頻
      • 1、顯示圖片
      • 2、播放視頻
  • 三、打開攝像頭并顯示圖像
      • 1. 虛擬機(jī)獲取攝像頭權(quán)限
  • 四、問題回答
      • 1. 問題一
      • 問題二
  • 五、總結(jié)
  • 參考資料

一、安裝opencv

1、前置安裝條件

開始安裝opencv前,必須安裝,否則后續(xù)安裝出錯(cuò)

sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

2.安裝環(huán)境

VMware虛擬機(jī)安裝的ubuntu系統(tǒng)22.04
opencv版本:3.4.11

3.下載opencv3.4.11

https://opencv.org/releases/
opencv官方下載地址
使用Ubuntu系統(tǒng)中的瀏覽器打開,找到其中的3.4.11版本

4.解壓安裝包

下載的安裝包一般在虛擬機(jī)的下載文件中,將其復(fù)制到主目錄中來(home),解壓。

unzip opencv-3.4.11.zip

或者直接雙擊安裝包,提取文件解壓。
解壓后,可以重命名,方便后續(xù)操作。

5.開始安裝

在終端進(jìn)入之前解壓的文件夾開始以下操作:
創(chuàng)建build文件夾:

mkdir build

進(jìn)入build文件夾:

cd build

然后依次輸入以下代碼:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. //等待代碼運(yùn)行.... sudo make //此步耗時(shí)長,四十分鐘左右 sudo make install sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf.d/opencv.conf" sudo ldconfig

6.檢查是否安裝成功

pkg-config --modversion opencv

出現(xiàn)

3.4.11

便是安裝上了opencv3.4.11

二、顯示圖片和播放視頻

1、顯示圖片

創(chuàng)建一個(gè)test1.cpp文件

touch test.cpp #include <opencv2/highgui.hpp> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) {CvPoint center;double scale = -3; IplImage* image = cvLoadImage("picture.png");argc == 2? cvLoadImage(argv[1]) : 0;cvShowImage("Image", image);if (!image) return -1; center = cvPoint(image->width / 2, image->height / 2);for (int i = 0;i<image->height;i++)for (int j = 0;j<image->width;j++) {double dx = (double)(j - center.x) / center.x;double dy = (double)(i - center.y) / center.y;double weight = exp((dx*dx + dy*dy)*scale);uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);ptr[0] = cvRound(ptr[0] * weight);ptr[1] = cvRound(ptr[1] * weight);ptr[2] = cvRound(ptr[2] * weight);}Mat src;Mat dst;src = cvarrToMat(image);cv::imwrite("test.png", src);cvNamedWindow("test",1); imshow("test", src);cvWaitKey();return 0; }

編譯:

g++ test1.cpp -o test1 pkg-config --cflags --libs opencv

在test1.cpp文件同一目錄下存放一張圖片,文件名為:picture.png

運(yùn)行:./test1

2、播放視頻

創(chuàng)建文件test2.cpp

#include <opencv2/opencv.hpp> using namespace cv; int main() {//讀取視頻VideoCapture capture("rainstorm.mp4");//循環(huán)顯示每一幀while(1){Mat frame;//定義一個(gè)Mat變量,用于存儲(chǔ)每一幀的圖像capture >> frame;//讀取當(dāng)前幀if(frame.empty())//播放完畢,退出break;imshow("讀取視頻幀",frame);//顯示當(dāng)前幀waitKey(30);//掩飾30ms}system("pause");return 0; }

編譯:

g++ test2.cpp -o test2 pkg-config --cflags --libs opencv

運(yùn)行:

./test2

三、打開攝像頭并顯示圖像

1. 虛擬機(jī)獲取攝像頭權(quán)限

快捷鍵win+r,輸入services.msc ,回車
找到VMware USB Arbitation server,重新啟動(dòng)。

在VMware 中點(diǎn)擊 “ 虛擬機(jī) ” ,然后點(diǎn)擊 “ 設(shè)置(S)… ”。
選擇 “ USB控制器 ” ,將 “ USB兼容性 ” 設(shè)置為 “ USB 3.0 ” ,并點(diǎn)擊確定。

選擇 “ 虛擬機(jī) ” ,再選擇 “ 可移動(dòng)設(shè)備 ” ,再選擇 “IMC Networks USB2.0 VGA UVC WebCam ” ,最后點(diǎn)擊 “ 連接 ” ,再彈出的窗口內(nèi)點(diǎn)擊 “ 確定 ” 。

虛擬機(jī)右下角這個(gè)攝像頭圖標(biāo)有個(gè)小綠點(diǎn),則連接成功。

創(chuàng)建一個(gè)test3.cpp文件,代碼如下:

/********************************************************************* 打開電腦攝像頭,空格控制視頻錄制,ESC退出并保存視頻RecordVideo.avi *********************************************************************/ #include<iostream> #include <opencv2/opencv.hpp> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std;int main() {//打開電腦攝像頭VideoCapture cap(0);if (!cap.isOpened()){cout << "error" << endl;waitKey(0);return 0;}//獲得cap的分辨率int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH));int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT));Size videoSize(w, h);VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);Mat frame;int key;//記錄鍵盤按鍵char startOrStop = 1;//0 開始錄制視頻; 1 結(jié)束錄制視頻char flag = 0;//正在錄制標(biāo)志 0-不在錄制; 1-正在錄制while (1){cap >> frame;key = waitKey(100);if (key == 32)//按下空格開始錄制、暫停錄制 可以來回切換{startOrStop = 1 - startOrStop;if (startOrStop == 0){flag = 1;}}if (key == 27)//按下ESC退出整個(gè)程序,保存視頻文件到磁盤{break;}if (startOrStop == 0 && flag==1){writer << frame;cout << "recording" << endl;}else if (startOrStop == 1){flag = 0;cout << "end recording" << endl;}imshow("picture", frame);}cap.release();writer.release();destroyAllWindows();return 0; }

編譯:

g++ test3.cpp -o test3 pkg-config --cflags --libs opencv

運(yùn)行:

./test3

四、問題回答

1. 問題一

編寫一個(gè)打開圖片進(jìn)行特效顯示的代碼 test1.cpp(見opencv編程參考資料 );

注意gcc編譯命令:

gcc test1.cpp -o test1 pkg-config --cflags --libs opencv

1)請解釋這條編譯命令,它是如何獲得opencv頭文件、鏈接lib庫文件的路徑的?

2)改用make+makefile方式編譯 上述程序(用變量命名格式寫makefile文件,并包括 clean選項(xiàng))
回答:1)gcc + 文件名 + -o + 輸出文件名 + 支持包
其中的``pkg-config 工具主要功能如下:
1.檢查庫的版本號(hào)。如果所需要的庫的版本不滿足要求,它會(huì)打印出錯(cuò)誤信息,避免鏈接錯(cuò)誤版本的庫文件。
2.獲得編譯預(yù)處理參數(shù),如宏定義,頭文件的位置。
3.獲得鏈接參數(shù),如庫及依賴的其它庫的位置,文件名及其它一些連接參數(shù)。
4.自動(dòng)加入所依賴的其它庫的設(shè)置
所以,這條命令是通過“pkg-config”來獲得opencv頭文件、鏈接lib庫文件的路徑的。

問題二

  • 練習(xí)使用opencv庫編寫打開攝像頭壓縮視頻的程序。參考示例代碼1和示例代碼2。并回答:
  • 1)如果要求打開你硬盤上一個(gè)視頻文件來播放,請問示例代碼1第7行代碼如何修改?

    2)在示例代碼1第9行的while循環(huán)中,Mat是一個(gè)什么數(shù)據(jù)結(jié)構(gòu)? 為什么一定要加一句waitKey延時(shí)代碼,刪除它行不行?

    3)示例代碼1代碼會(huì)在while循環(huán)中一直運(yùn)行,你如果試圖用鼠標(biāo)關(guān)閉圖像顯示窗口,會(huì)發(fā)現(xiàn)始終關(guān)不掉。需要用鍵盤Ctrl+C 強(qiáng)制中斷程序,非常不友好。如何改進(jìn)?
    回答:1)改為: VideoCapture capture(“硬盤中視頻的地址”)
    2) while循環(huán)中的mat數(shù)據(jù)結(jié)構(gòu)其實(shí)是一個(gè)點(diǎn)陣,對應(yīng)圖像上的每一個(gè)點(diǎn),點(diǎn)的集合形成了一幀圖像;waitKey(30) ,中的參數(shù)單位是 ms 毫秒,也就是每一幀間隔 30 ms ,該語句時(shí)不能刪除的,否則會(huì)執(zhí)行錯(cuò)誤,無法播放視頻或錄制視頻。
    3)在while循環(huán)語句中添加一個(gè)if語句,例如:if(key==27){ break;} ,按下exc退出程序。

    五、總結(jié)

    此次安裝opencv3.4.11,耗時(shí)極長,參考了許多的帖子最終才安裝成功。歸根結(jié)的是因?yàn)槊颗_(tái)虛擬機(jī)的運(yùn)行環(huán)境不同,有些需要在安裝opencv前的設(shè)置沒設(shè)置好。還好找到了一篇更加詳細(xì)的帖子,介紹到了安裝前置條件才安裝成功了。謝謝大佬!!

    參考資料

    1.https://blog.csdn.net/weixin_46129506/article/details/120646081
    2.https://blog.csdn.net/zvui_/article/details/108219155?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-108219155-blog-99044895.pc_relevant_multi_platform_whitelistv6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-108219155-blog-99044895.pc_relevant_multi_platform_whitelistv6&utm_relevant_index=16

    總結(jié)

    以上是生活随笔為你收集整理的Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 欧美特级黄色片 | 亚洲深夜在线 | 国产娇小hdxxxx乱 | 精品国产乱码久久久久久久 | yy4138理论片动漫理论片 | 红色假期黑色婚礼2 | 黄色片在线视频 | av电影网站在线观看 | 三年在线观看视频 | 无码国产色欲xxxxx视频 | 精品国产高清在线观看 | 69免费视频 | 深夜免费福利 | 亚洲欧美偷拍一区 | 欧美爱爱网址 | 森泽佳奈av| 精品无码久久久久久国产 | avwww| 日本人妻熟妇久久久久久 | 一卡二卡三卡视频 | 黄色.com | 亚洲三级在线视频 | 一级视频在线 | 亚洲综合成人av | 福利视频一区二区 | 一级黄色美女视频 | 欧美一区二区三区久久妖精 | 国产精品久久无码一三区 | 麻豆视频免费 | 黄色国产片| 一区二区三区欧美在线 | 亚洲国产成 | 好吊色网站| 国产麻豆剧果冻传媒白晶晶 | 岛国精品资源网站 | 在线不卡一区 | 神马伦理视频 | 日韩av线 | 美女被揉胸视频 | 国产日韩欧美不卡 | 午夜影院在线观看免费 | 国产高清一级片 | 欧美一区二区免费电影 | 亚洲国产精品成人 | 在线观看国产 | 欧美看片| 成人写真福利网 | 一本色道久久综合亚洲精品图片 | 亚洲做受高潮无遮挡 | 91成人入口 | 国产精品av一区 | 人人人人爽 | 91看片就是不一样 | 国产精品一区二区三区久久久 | 97超碰碰 | 国产一级全黄 | 极品尤物一区二区三区 | 99久久久无码国产精品性波多 | 免费性片 | 青娱乐国产在线 | 青草成人| 国产高清免费 | 夜夜伊人 | 黄色亚洲视频 | 最新成人在线 | 国产做爰高潮呻吟视频 | 法国空姐在线观看完整版 | 免费在线看黄色片 | 日本久久久久久久久久久 | 亚洲欧洲成人精品久久一码二码 | 95在线视频 | 国产精品无码久久av | 日本一区二区三区四区在线观看 | 日韩精品在线观看一区 | 日韩大片av | 99自拍网 | 免费大片黄在线观看视频网站 | 综合国产精品 | 少妇无码一区二区三区 | 亚洲三级理论 | 日韩无 | 一本毛片| 特黄在线 | 一边摸一边做爽的视频17国产 | 插插网站 | 国产精品一区二区久久国产 | 久久成人在线视频 | 少妇精品久久久久www | 久久密| 亚洲精品污 | 高清毛片aaaaaaaaa片 | www.色就是色| 69xx视频在线观看 | av电影一区二区 | 日韩毛片高清在线播放 | 中国大陆高清aⅴ毛片 | 永久免费视频网站 | 黑人精品无码一区二区三区 | 我们的生活第五季在线观看免费 |