當前位置:首頁 » 操作系統 » qtcreatorforlinux

qtcreatorforlinux

發布時間: 2022-08-02 19:24:49

A. 如何在linux中用QTcreator 調用本地攝像頭

/* 打開設備並進行錯誤檢查 */
int fd = open ("/dev/video",O_RDONLY);
if (fd==-1){
perror ("Can't open device");
return -1;
}

/* 查詢設備的輸出格式 */
struct v4l2_format format;
memset (&format,0,sizoef(format));
format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (-1==ioctl(fd,VIDIOC_G_FMT,&format)){
perror ("While getting format");
return -2;
}

/*
* 這里要將struct v4l2_format結構體置零,然後將
* format.type設定為V4L2_BUF_TYPE_VIDEO_CAPTURE,
* 這樣在進行 VIDIOC_G_FMT 的ioctl時,驅動就會知
* 道是在捕獲視頻的情形下獲取格式的內容。
* 成功返回後,format就含有捕獲視頻的尺寸大小及格
* 式。格式存儲在 format.fmt.pix.pixelformat這個32
* 位的無符號整數中,共四個位元組,以小頭序存儲。這里
* 介紹一種獲取的方法。
*/

char code[5];
unsigned int i;
for (i=0;i<4;i++) {
code[i] = (format.fmt.pix.pixelformat & (0xff<<i*8))>>i*8;
}
code[4]=0;

/* 現在的code是一個以\0結束的字元串。很多攝像頭都是以格式MJPG輸出視頻的。
* MJPG是Motion JPEG的縮寫,其實就是一些沒填霍夫曼表的JPEG圖片。
*/

/* 請求一定數量的緩沖區。
* 但是不一定能請求到那麼多。據體還得看返回的數量
*/
struct v4l2_requestbuffers req;
memset (&req,0,sizeof(req));
req.count = 10;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (-1==ioctl(fd,VIDIOC_REQBUFS,&req)){
perror ("While requesting buffers");
return -3;
}
if (req.count < 5){
fprintf (stderr, "Can't get enough buffers!\n");
return -4;
}

/* 這里請求了10塊緩存區,並將其類型設為MMAP型。 */

/* 獲取緩沖區的信息
* 在操作之前,我們必須要能記錄下我們
* 申請的緩存區,並在最後使用munmap釋放它們
* 這里使用結構體
* struct buffer {
* void * start;
* ssize_t length;
* } 以及buffer數量
* static int nbuffer
* 來表示
*/
struct buffer * buffers = (struct buffer *)malloc (nbuffer*sizeof(*buffers));
if (!buffers){
perror ("Can't allocate memory for buffers!");
return -4;
}

struct v4l2_buffer buf;
for (nbuffer=0;nbuffer<req.count;++nbuffer) {
memset (&buf,0,sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = nbuffer;

if (-1==ioctl(fd,VIDIOC_QUERYBUF,&buf)){
perror ("While querying buffer");
return -5;
}

buffers[nbuffer].length = buf.length;
buffers[nbuffer].start = mmap (
NULL,
buf.length,
PROT_READ, /* 官方文檔說要加上PROT_WRITE,但加上會出錯 */
MAP_SHARED,
fd,
buf.m.offset
);

if (MAP_FAILED == buffers[nbuffer].start) {
perror ("While mapping memory");
return -6;
}
}

/*這個循環完成後,所有緩存區都保存在
*了buffers這個數組里了,完了就再將它們munmap即可。
*/

/* 打開視頻捕獲 */
enum v4l2_buf_type type;
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (-1==ioctl(fd,VIDIOC_STREAMON,&type)){
perror ("While opening stream");
return -7;
}

/* 與內核交換緩沖區 */
unsigned int i;
i=0;
while(1) {
memset (&buf,0,sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;

if (-1==ioctl(fd,VIDIOC_DQBUF,&buf)){
perror ("While getting buffer's data");
return -8;
}

/* 現在就得到了一片緩沖區的數據,發送處理 */
process_image ( buffers+buf.index,buf.index );

/* 將緩沖區交還給內核 */
if (-1==ioctl(fd,VIDIOC_QBUF,&buf)){
perror ("While returning buffer's data");
return -9;
}

i = (i+1) & nbuffer;
}
這就是所有獲取的過程了。至於圖像的處理,則是由解碼函數和Qt來處理。現在先進行一些思路的設計。設想在進行圖像的轉換時,必須提供一塊內存區域來進行,我們當然可以在轉換時使用malloc來進行動態分配,轉換完成並顯示後,再將它free。然而這樣做對內核而言是一個不小的負擔:每次為一整張圖片分配內存,最少也有上百KB,如此大的分配量和釋放量,很容易造成內存碎片加重內核的負擔。由於僅是每轉換一次才顯示一次圖像,所以這片用於轉換的內存區域可以安全地復用,不會同時由兩個線程操作之。因此在初始化時我們為每一塊內存映射緩沖區分配一塊內存區域作為轉換用。對於MJPEG到JPEG的轉換,使用相同的內存大小。代碼就不在此列出了。這片假設這個內存區域的起始指針為convertion_buffers,在process_image (struct buffer * buf, int index ) 中,有

void process_image (struct buffer *buf, int index){
struct * buffer conv_buf = convertion_buffers+index;
do_image_conversion (
buf->start, buf->length, /* 要轉換的區域 */
conv_buf->start, conv_buf->length, /* 保存轉換數據的區域 */
);

/* 現在就可以把數據取出並交給QPixmap處理
* 要在一個QWidget里作圖,必須重載paintEvent
* 函數並用QPainter作畫。然而paintEvent
* 是由事件驅動層調用的,我們不能手工,
* 所以在我們自己的的重載類里要保存一個全局
* 的QPixmap。這里設為 QPixmap * m_pixmap
*/
m_pixmap -> loadFromData (conv_buf->start,conv_buf->length);
/* 立即安排一次重繪事件 */
repaint ();
}

/* 重載的paintEvent示例 */
MyWidget::paintEvent (QPaintEvent * evt) {
QPainter painter(this);
painter.drawPixmap (QPoint(0,0),*m_pixmap);
QWidget::paintEvent(evt);
}

V4L搞定 +QT顯示攝像頭視頻 +QT顯示GIF動畫 2009-11-02 09:32 哎 兩星期前終於搞定了qt上顯示攝像頭視頻採集 現在來把最終重要的代碼總結下 QImage img; unsigned char *bit= v4l _dev.buffer; / /v41_dev.buffer為內存映射的地址 QRgb *point; int r, g, b; QPainter paint; if(img.create(MAX_WIDTH, MAX_HEIGHT,32, 0, QImage::IgnoreEndian)) { for(y=0; ysetMovie(movie); gif_lable->show();
哎 兩星期前終於搞定了qt上顯示攝像頭視頻採集, 現在來把最終重要的代碼總結下
QImage img;

unsigned char *bit= v4l _dev.buffer; / //v41_dev.buffer為內存映射的地址

QRgb *point;

int r, g, b;

QPainter paint;

if(img.create(MAX_WIDTH, MAX_HEIGHT,32, 0, QImage::IgnoreEndian))

{

for(y=0; y<MAX_HEIGHT; y++)

{

for(x=0; x<MAX_WIDTH; x++)

{

r=(int)bit[i+2];

g=(int)bit[i+1];

b=(int)bit[i];

point= (QRgb *)(img).scanLine(y)+ x;

*point = qRgb(r,g,b); //qRgb函數能夠將數據轉為RGB三像素值

i+=3;

}

}

}

但是不是很明白,希望有人能把這個直接寫成 QT GUI APPLICATION PROJECT 然後我再參考下。。。因為對於QT的類庫真的不太了解,呵呵

B. 如何安裝qt for linux

一、下載

1
首先,前往如圖所示的官網地址下載需要的Qt組件。

2
在下載頁面中,單擊如圖所示的Download下載按鈕。該版本是可供大家免費使用的。

3
接下來,在打開的頁面中,注意不單擊那個顯著的Download Now下載按鈕,這其實是下載一個安裝器到本地電腦,用安裝器下載Qt的速度很慢。
我們單擊下面的 View All Downloads 文字鏈接,打開真實的Qt下載地址直接下載。

4
頁面打開後,就可以單擊鏈接直接下載所需的Qt組件了。
在 windows 下常見的安裝方式需要下載的組件如下:
1)32 位 Windows,使用 MinGW:下載 Qt 5.4.0 for Windows 32-bit (MinGW 4.9.1) 【註:系統上無須已安裝 MinGW】
2)32 位/64位 Windows,使用 VS2013:下載對應版本的 VS2013 Qt 5.4.0 for Windows 32/64-bit 【註:系統上需要已經安裝 VS2013】
3)32 位/64位 Windows,使用 OpenGL:下載對應版本的 Qt 5.4.0 for Windows 32/64-bit VS 2010/2012/2013, OpenGL【註:系統上需要已經安裝 VS2010/2012/2013】

5
在這兒需要提醒大家注意:
1)要根據自己的電腦系統來選擇組件。比如以上下載鏈接請先認準是在 windows 主機一欄下的鏈接。如果是 Linux 系統,則應到 Linux 主機一欄下去找下載鏈接
2)無需另外下載 Qt Creator 集成開發環境,以上每組組件均已包含

END
二、安裝

組件下載後,雙擊即可啟動安裝。

首先是選擇安裝目錄。

然後是選擇要安裝的項目,一般全部勾選。

選擇同意條款。

點擊下一步。

到了如下界面時,一切安裝前准備工作就已經做好了,點擊「安裝」按鈕靜心等待安裝完成就可以了。

C. linux安裝qt creator出錯

文件有問題,或者是版本沖突。你把qtsdk-2010.05卸載,試試。

D. linux下 用qt creator 編譯程序 提示錯誤,請高手指導

缺少g++ 安裝C編譯器 如果你是UBUNTU 你就用 #sudo apt-get install g++

E. qtcreator在Linux上調用失敗,求助

不管是windows還是在Linux,出現這個問題首先考慮查看系統下是否安裝有調試器
1.如果沒有安裝,則安裝合適的調試器,然後轉步驟3;

2.如果已安裝調試器則查看QtCreator能否自動檢測到。如果未檢測到轉步驟3.

3.設置調試器:在工具->選項->構建和運行->調試器中添加調試器。重啟QtCreator即可。
ps: linux下使用 yum install gdb,安裝gdb調試工具。

F. 如何使用qtcreator linux

安裝
後得到大小 47.2 Mb 的安裝文件 qt-creator-linux-x86_64-opensource-1.3.0.bin,在 Linux 上安裝如下:
chmod u+x ./qt-creator-linux-x86_64-opensource-1.3.0.bin
./qt-creator-linux-x86_64-opensource-1.3.0.bin
這時候,啟動了 Setup Qt Creator 歡迎安裝對話框,點擊「Next」->
協議許可界面,選擇「I accept the agreement」,點擊「Next」 ->
選擇 Qt Creator 安裝目錄對話框。作者選擇的是 /home/defonds/TOOLS/qtcreator/qtcreator-1.3.0,點擊「Next」 ->
准備安裝界面,點擊「Next」 ->
安裝結束,點擊「Finish」。
Qt Creator 使用
新建項目 HelloWorld
啟動桌面上的 Qt Creator。新建工程 HelloWorld,菜單點擊「File」 -> New File or Project -> Projects 中選擇 Empty Qt4 Project -> OK -> 項目名鍵入 HelloWorld,工作台隨意,作者選擇的是 /home/defonds/cpp/qt , Next -> Finish。

G. linux下的qt creator需要安裝什麼組件

QT的早期版本和現在版本有點變化,提供的文件也不盡相同,最新的版本為5.0,我這里用的是4.8.4,一個完整的QT應該包括QT庫、IDE也就是QT creator,在Linux下的安裝中,目前看到的主要有三種方法:
1bin文件直接安裝,文件名為qt-sdk-……,一個./bin直接包括了所有相關工具,安裝起來最為簡單方便,但是目前的4.8.4在幾個網站上已經找不到總的sdk的bin文件了,老版本的還是可以的。

H. 如何在ubuntu下安裝qt-creator-linux-x86

Qt Creator支持中文,啟動速度比Eclipse、Netbeans更快,界面也更美觀,跟輸入法Fcitx協作良好(游標跟隨)。 你既可以把Qt Creator當代碼編輯器作為vim輔助,好處在於Qt Creator能夠自動parse項目,形成友好快速的智能提示,而且你也同樣可以使用Qt Creator裡面的gdb前端(上圖)和valgrind前端(高清大圖) 對項目進行調試和內存分析,不過Makefile就要自己寫或者用autotools生成了,這對於使用vim進行編程的同學來說,應該是輕車熟路的。差點忘了,連續按兩次Alt+V快捷鍵即可進入VIM編輯模式(FakeVim),這應該很能吸引vim用戶。當然,Qt Creator默認支持主流版本控制系統git/hg/svn等。 你也可以把Qt Creator當作IDE,這時可以作為Eclipse CDT、 Netbeans for C++這些重量級IDE的一個輕量替代品。你可以直接在Qt Creator的向導里新建一個非Qt使用CMake自動構建的項目,這意味著你不用自己寫Makefile,你只要在Qt Creator里“執行CMake”就能自動生成。當然,你也可以導入一個make構建的項目到Qt Creator里編譯調試,比如Nginx。 1、安裝Qt Creator和基礎構建環境(以Ubuntu為例): 安裝基礎系統構建工具包: 代碼如下: sudo apt-get -y install build-essential cmake valgrind 下載最新版二進制Qt Creator(建議使用基於Qt4構建的2/qtproject/official_releases/qtcreator/2.8/2.8.1/ 不進行GUI編程,不需要安裝Qt SDK,也就沒有qmake和相關Qt開發庫,只用下載那個60M的Qt Creator就好了,比如我下的是: 代碼如下: qt-creator-linux-x86_64-opensource-2.8.1.run 下載後給予執行許可權,運行選擇安裝目錄安裝即可,可以安裝在自己的家目錄。 項目配置默認存放位置~/.config/QtProject 可以通過參數-settingspath自定義配置文件存放位置,比如: 代碼如下: /home/eechen/qtcreator-2.8.1/bin/qtcreator -settingspath /home/eechen/qtcreator-2.8.1 注意:如果你用的是基於Qt5構建的Qt Creator 3系列,其默認集成了iBus輸入法插件,而對於Fcitx插件,則需要手動安裝包fcitx-frontend-qt5, 然後復制.so到Qt Creator 3的 bin/plugins/platforminputcontexts 目錄,比如: sudo apt-get install fcitx-frontend-qt5 ln -s /usr/lib/`arch`-linux-gnu/qt5/plugins/platforminputcontexts/.so /png/dev/qtcreator-3.2.1/bin/plugins/platforminputcontexts/ 重啟QtCreator,就可以正常使用Fcitx輸入法了. 2、把自動完成快捷鍵"Ctrl+空格"改為"Alt+/"或者"Shift+Return"(Return表示Enter鍵) 工具-選項-環境-鍵盤: 鍵盤快捷鍵輸入"Ctrl+空格",在鍵位順序中點擊x刪除原來的"Ctrl+空格",輸入新的"Alt+/",確定退出. 3、在Qt Creator中使用make構建,運行,調試通用C/C++項目 文件-新建文件或項目-導入項目-導入現有項目 這樣導入的項目用的是make構建,需要自己寫好Makefile文件後才能構建,支持自動完成,支持調試和內存分析. 4、在Qt Creator中使用cmake構建,運行,調試通用C/C++項目 文件-新建文件或項目-非Qt項目:新建一個CMake項目 在"執行CMake"這一步的參數中填入-DCMAKE_BUILD_TYPE=Debug 這樣才可以在Qt Creator中調試程序,-DCMAKE_BUILD_TYPE的值可以設為Debug或者Release或者RelWithDebInfo. cmake可以自動生成Makefile方便用make構建項目,但使用cmake構建項目也必須要會編寫CMakeLists.txt文件. Qt Creator支持使用qmake,make,cmake構建項目,但不能直接往cmake項目里添加文件,Qt Creator對CMake的支持還有待改進. 臨時的做法是,切換到文件管理器來添加文件,然後右擊項目"執行CMake"使parsing(語法解析)生效,並載入文件到在項目. 5、Qt Creator會自動識別系統中安裝的gcc、g++、gdb、make、cmake、valgrind,也可以自己到菜單"工具"->"選項"里進行一些自定義配置. 配置vim外部編輯器: 工具->選項->環境->外部工具->使用vi進行編輯 把xterm改為konsole或者gnome-terminal 參數改為-e vim "%{CurrentDocument:FilePath}" 配置終端: 工具->選項->環境->概要 KDE環境默認為 代碼如下: /usr/bin/konsole -e 如果要用gnome-terminal,則設為/usr/bin/gnome-terminal -x 設置在終端運行程序: 項目(側邊欄)-運行-勾選"在終端中運行" 調試(gdb)時出現"ptrace operation not permitted"問題解決辦法: 臨時設置: 代碼如下: sudo sysctl kernel.yama.ptrace_scope=0 永久設置: 編輯/etc/sysctl.d/10-ptrace.conf改為kernel.yama.ptrace_scope = 0 系統默認設為1的目的是為了安全,防止用戶程序(比如這里的gdb)訪問其他進程(比如這里的konsole,gnome-terminal)內存的數據.

I. linux 怎樣安裝 qtcreator開發的程序

安裝
下載後得到大小 47.2 Mb 的安裝文件 qt-creator-linux-x86_64-opensource-1.3.0.bin,在 Linux 上安裝如下:
chmod u+x ./qt-creator-linux-x86_64-opensource-1.3.0.bin
./qt-creator-linux-x86_64-opensource-1.3.0.bin
這時候,啟動了 Setup Qt Creator 歡迎安裝對話框,點擊「Next」->
協議許可界面,選擇「I accept the agreement」,點擊「Next」 ->
選擇 Qt Creator 安裝目錄對話框。作者選擇的是 /home/defonds/TOOLS/qtcreator/qtcreator-1.3.0,點擊「Next」 ->
准備安裝界面,點擊「Next」 ->
安裝結束,點擊「Finish」。
Qt Creator 使用
新建項目 HelloWorld
啟動桌面上的 Qt Creator。新建工程 HelloWorld,菜單點擊「File」 -> New File or Project... -> Projects 中選擇 Empty Qt4 Project -> OK -> 項目名鍵入 HelloWorld,工作台隨意,作者選擇的是 /home/defonds/cpp/qt , Next -> Finish。

J. windows下qt creator編寫的程序如何在linux下執行

Windows下是ANCII編碼的,Linux下是Unicode編碼的,源程序注意轉化一下編碼就可以了。
fedora12下面,你可以去Qt的官方網站下載rpm安裝包或者在在線軟體倉庫里找找啊。
Qt Creator在Windows下和在Linux下的用法基本一樣,就是注意以下源文件的字元編碼就OK了。還有Linux下的文件名連後綴都是區分大小寫的,所以一些涉及到文件讀寫的程序,後綴名也要注意一下。

熱點內容
我家小鎮更新密碼是多少 發布:2025-01-18 00:22:39 瀏覽:168
手動擋停車場安卓和蘋果怎麼連 發布:2025-01-18 00:11:45 瀏覽:359
斗魚下載後輸入什麼密碼才能下載 發布:2025-01-18 00:04:09 瀏覽:81
跳出遊標sql 發布:2025-01-17 23:42:26 瀏覽:774
通達信軟體源碼 發布:2025-01-17 23:41:48 瀏覽:698
百度雲上傳的照片不全 發布:2025-01-17 23:41:36 瀏覽:887
f7x哪個配置值得入手 發布:2025-01-17 23:40:12 瀏覽:906
谷歌輸入法的貼紙安卓怎麼用 發布:2025-01-17 23:35:33 瀏覽:217
鄰接種子演算法 發布:2025-01-17 23:34:28 瀏覽:312
日記密碼是什麼 發布:2025-01-17 23:27:48 瀏覽:209