Thông báo
Collapse
No announcement yet.
QT4- Lập trình nhúng trên Ubuntu
Collapse
X
-
Dùng cơ chế hàm call-back kiểu cổ điển và ... thô thiển. Dùng cơ chế signal-slot trong trường hợp đơn giản. Tạo mới event và post lên vòng lặp sự kiện chung là cách tổng quát nhất; cách này dùng được ở cả GTK, Qt lẫn wxWidgets. Kết nối giữa các thread khác nhau chạy song song cũng được.
-
Trong QT mình muốn tạo nhiều Form và truyền dữ liệu giữa các Form thì như thế nào vậy các bạn nhỉ ?
Leave a comment:
-
Bạn có thể chỉ cho mình cách get pixel color trên QML QT không?
ví dụ trên Rectangle Gradient, video....
Hay có hướng đi nào có thể get pixel color không?
Hiện tại mình dùng Window.h và GDI nhưng vẫn chưa được.
Leave a comment:
-
Bạn có thể thay đổi đường dẫn ở chỗ load ảnh ý : QImage img(".../qt4.png")
Leave a comment:
-
ban ơi,ví dụ như ở đây, mình mún load 1 ảnh ở 1 thư mục bất kỳ thì làm ra sao vậy
Leave a comment:
-
bạn cho mình nick yahoo để có ji mình liên lạc hoc hỏi dc không
Leave a comment:
-
Mình mới làm truyền video thôi. Chưa có audio. Truyền thời gian thực qua mạng addhoc. Nói chung là tốc độ cũng ổn ổn. Nhưng chương trình viết bằng QT mình viết vẫn còn tốn bộ nhớ lắm. Chưa xử lí được vấn đề rò rỉ bộ nhớ
Leave a comment:
-
truyền audio và video thời gian thực
Nguyên văn bởi tuylipden Xem bài viếtĐể capture hình ảnh từ camera trước tiên cần phải tìm một công cụ tích hợp, hình như trong Qt cũng có một cái tool về camera này thì phải. Nhưng mà khó dùng ( có đợt mình cũng thử nhưng chẳng chạy được cái gì ). Vì vậy mình xài Opencv để lấy hình ảnh từ camera về. Cái này có điểm lợi là lấy hình ảnh khá dễ do opencv mạnh mà . Nhưng thiệt là hình ảnh lấy về được là kiểu IplImage. Kiểu ảnh này là dạng ảnh của opencv và tất nhiên là Qt nó bó tay luôn. Nên mình phải dùng một hàm để chuyển sang kiểu QImage của QT. Khi thực hiện bước này xong thì bài toán đã trở về ví dụ 1 rồi
Bước 1 : Cài đặt opencv và tích hợp vào Qt
Bạn nào sử dụng ubuntu thì đơn giản rùi. Các bạn vào System >Administration > Synaptic Package Manager. Trong ô search gõ opencv. Bỏ 2 cái đầu và cái cuối còn đâu bạn chọn hết rồi ấn Apply để cài đặt
Tiếp theo là add các thư viện của opencv vào Qt.
Khi tạo Project của Qt có xuất hiện một file .pro, file này sẽ quyết dịnh việc sử dụng module nào, thư viện nào cho Qt. Để add opencv vào project của Qt bạn thêm các lệnh sau vào file .pro
Bước 2 : Capture hình ảnh kiểu IplImage
Mình sẽ tạo 1 class mới để capture hình ảnh. Trong project các bạn click chuột phải vào phần tên project, của mình ở đây vẫn là test. Sau đó bạn chọn Add new.... Bạn chọn C++ Class và ấn Choose.... Bạn đặt tên cho class. Ở đây mình đặt tên là "Camera" và chọn Base class là QWidget. Chọn Finish để kết thúc.
Sử dụng các hàm sau để lấy ảnh
//Khởi tạo camera
// Lấy frame từ camera
Bước 3 : Chuyển kiểu IplImage sang QImage
Mình dùng hàm sau để chuyển kiểu
Đến đây thì bài toán đã quay về vd 1 rồi
Bạn ơi, cho mình hỏi, bạn đã dùng opencv truyền audio hoặc video trực tiếp chưa (giống như chat voice hoặc webcam trong yahoo áh), nếu có rồi chia sẽ ít kiến thức của bạn dc hok,mình đang làm đề tài này.Cảm ơn bạn nhiều
Leave a comment:
-
Nhan Corp - Xây dựng Website - Graphic & 3D - Internet Marketing - Phần mềm nguồn mở - Việt Nam
Tuyển lập trình viên C/C++ Quý II Năm 2011 | Quacau® Corporation
Việc làm Tuyển Lập Trình Viên C/c++ , Công ty CP Giải pháp Công nghệ và Dịch vụ Trực tuyến Quả Cầu 542facb7905e1b9 | Vieclam.vn
Câu hỏi của bạn khó có câu trả lời nào hoàn hảo cả.
Cuộc sống này không biết trước được điều gì cả. Mình còn trẻ thì nên tích lũy bạn à, tích lũy kiến thức, kinh nghiệm, vốn, và tích lũy mối quan hệ. Trong những năm tháng học đại học thì tích lũy kiến thức theo mình là quan trọng nhất. Nhưng sau khi học đại học xong bạn cũng cần phải học thêm rất nhiều thứ nữa, kể cả bạn có học QT hay không thì vẫn chưa đủ. Nếu bạn biết trước được tương lai như thế nào thì đâu còn gọi là tương lai nữa. Bạn yên tâm là vẫn có đất dụng võ. Trong trường có lúc mình cũng nghĩ sao người ta dạy nhiều môn thế, cần thiết k? câu trả lời là có, đối với tương lai mọi thứ đều không đủ.
Leave a comment:
-
Nhan Corp - Xây dựng Website - Graphic & 3D - Internet Marketing - Phần mềm nguồn mở - Việt Nam
Tuyển lập trình viên C/C++ Quý II Năm 2011 | Quacau® Corporation
Việc làm Tuyển Lập Trình Viên C/c++ , Công ty CP Giải pháp Công nghệ và Dịch vụ Trực tuyến Quả Cầu 542facb7905e1b9 | Vieclam.vn
Câu hỏi của bạn khó có câu trả lời nào hoàn hảo cả.
Cuộc sống này không biết trước được điều gì cả. Mình còn trẻ thì nên tích lũy bạn à, tích lũy kiến thức, kinh nghiệm, vốn, và tích lũy mối quan hệ. Trong những năm tháng học đại học thì tích lũy kiến thức theo mình là quan trọng nhất. Nhưng sau khi học đại học xong bạn cũng cần phải học thêm rất nhiều thứ nữa, kể cả bạn có học QT hay không thì vẫn chưa đủ. Nếu bạn biết trước được tương lai như thế nào thì đâu còn gọi là tương lai nữa. Bạn yên tâm là vẫn có đất dụng võ. Trong trường có lúc mình cũng nghĩ sao người ta dạy nhiều môn thế, cần thiết k? câu trả lời là có, đối với tương lai mọi thứ đều không đủ.
Leave a comment:
-
Mấy bro ơi cho hỏi QT thì công ty nào tuyển dụng nhỉ, Mình cũng đã viết QT, , cũng rất hứng thú vì QT sử dụng C++, viết 1 lần chạy được trên nhiều playform nhưng ngặt nỗi chẳng thấy có thông tin gì tuyển dụng cả, toàn thấy java, C#, .net ..etc.. chẳng nhẽ học để đấy, còn viết giao diện thì C# mạnh và phổ biến hơn. Mặc dù có đam mê nhưng thực tế vẫn cần
Bác nào giải thích cho em với
Leave a comment:
-
Lỗi này là do bạn thiếu trình dịch g++ đấy ( Cái này tương ứng C++ trên linux ), bạn cài vào là được. Vào terminal gõ
$ sudo apt-get install g++
Leave a comment:
-
Nguyên văn bởi tuylipden Xem bài viếtĐã lâu rồi không thấy anh em trên diễn đàn nhắc đến QT nữa nhỉ ? Hiện tại mình đang làm một đề tài liên qua đến truyền video thời gian thực trên máy tính nhúng sử dụng mạng addhoc và lập trình trên QT4. Mình có rất nhiều điều muốn hỏi và mong được sự góp ý của anh em. Đồng thời qua đây cũng mong muốn QT ngày càng phát triển bởi quả thực nó là một Platform rất hay. Các công cụ có thể sánh ngang với visual. Trước hết mình xin bắt đầu vào phần cài đặt và sử dụng nhé sơ qua nhé
Để cài đặt QT4 trên ubuntu (10.10) bạn có 2 cách :
-Thứ nhất cài đặt trong Applications>Ubuntu Software Center .Bạn gõ Qt vào phần Search và cài đặt các phần Qt4 Designer, Qt4 Assistant, Qt4 Linguist, Qt4 Settings và cuối cùng là IDE riêng của QT QT Creator
-Thứ hai bạn có thể vào trang chủ của QT và down bộ cài đầy đủ ( gói SDK ) : Download Qt, the cross-platform application framework — Qt - A cross-platform application and UI framework
Sau khi bạn down gói SDK ( có đuôi là .run ) thì tiến hành cài đặt ,bạn chuyển gói này vào home, mở Terminal và gõ :
gõ tiếp
Theo mình nên cài theo cách thứ nhất. Bởi bản ubuntu 10.10 trở đi đã hỗ trợ đầy đủ cho Qt. Còn nếu bạn dùng phiên bản thấp hơn 10.10 thì nên cài theo cách thứ 2.
Tiếp theo mình xin làm một ví dụ nho nhỏ với Qt. Load ảnh từ máy tính và hiển thị
Bước 1: Tạo project của Qt.
Bạn vào Applications >Programing >QT Creator .Giao diện của Qt Creator hiện lên như sau
Bạn chọn Create Project
Tiếp theo bạn chọn loại project, ở đây mình sử dụng là Qt C++ Project> Qt Gui Application. Cuối cùng mình ấn choose và cửa sổ đặt tên project hiện ra
Sau khi đặt tên bạn chọn Next thì Qt sẽ yêu cầu bạn đặt tên cho class khởi đầu của chương trình ( Đây chỉ là một thủ tục, bạn có thể đặt tên rồi khi viết chương trình không sử dụng class này cũng chẳng sao ).
Trong vd này mình đặt tên Class là ShowImage.Chọn Base class là QWidget (lớp giao diện).Cuối cùng ấn Finish để bắt đầu lập trình.
Mình sẽ nói qua về các thành phần của một lớp trong QT
Một lớp trong Qt sẽ bao gốm 3 thành phần là :
Header file ( đuôi .h ), thành phần này có chức năng chứa các hàm, các biến toàn cục, con trỏ, hoặc cấp phát bộ nhớ cần khai báo để sử dụng trong class.
Thành phần thứ hai là Source file ( đuôi .cpp ), thành phần này chứa các định nghĩa hàm, chức năng các hàm trong class. Đây là thành phần quan trọng nhất trong Qt.
Thành phần thứ 3 là Form file ( đuôi .ui ). Tùy từng class và cách chọn của người sử dụng mà thành phần này có trong chương trình. Thành phần này giúp người sử dụng tạo giao diện dễ dàng hơn thông qua kéo thả đồng thời tương tác với các thành phần của giao diện ( button, label .... ) khá dễ dàng. Nếu không sử dụng thành phần này bạn cũng hoàn toàn có thể code giao diện trong file.cpp. Tất nhiên không thể thuận tiện và dễ quản lí như Form.
Bước 2 :Sau khi tạo project thì chúng ta bắt đầu lập trình thôi
Trước tiên mình vào form. Trong cột Project bạn click vào showimage.ui
Trong form này mình kéo thả tạo ra 2 cái label với tên là lbl_Hello ( Cái này dùng để hiện thị chữ "Hello" ) và lbl_Image ( Cái này là để show ảnh ).
Sau khi tạo xong mình quay về showimage, viết chữ "Hello" bằng cách sử dụng hàm setText()
Để hiện thị ảnh thì trước tiên bạn cần phải tạo một biết kiểu QImage ( Đây là một kiểu biến của Qt để xử lí ảnh) và load ảnh từ ổ cứng lên
Chú ý bạn phải để ảnh trong thư mục build project nhé. Ở đây của mình là thư mục Home/test-build-desktop
Tiếp theo để hiện thị hình ảnh thì ta cần chuyển QImage sang lớp QPixmap sau đó hiển thị các Pixmap trên label (lbl_Image)
Đến đây bạn có thể xem kết quả của mình rồi
Leave a comment:
-
Để capture hình ảnh từ camera trước tiên cần phải tìm một công cụ tích hợp, hình như trong Qt cũng có một cái tool về camera này thì phải. Nhưng mà khó dùng ( có đợt mình cũng thử nhưng chẳng chạy được cái gì ). Vì vậy mình xài Opencv để lấy hình ảnh từ camera về. Cái này có điểm lợi là lấy hình ảnh khá dễ do opencv mạnh mà . Nhưng thiệt là hình ảnh lấy về được là kiểu IplImage. Kiểu ảnh này là dạng ảnh của opencv và tất nhiên là Qt nó bó tay luôn. Nên mình phải dùng một hàm để chuyển sang kiểu QImage của QT. Khi thực hiện bước này xong thì bài toán đã trở về ví dụ 1 rồi
Bước 1 : Cài đặt opencv và tích hợp vào Qt
Bạn nào sử dụng ubuntu thì đơn giản rùi. Các bạn vào System >Administration > Synaptic Package Manager. Trong ô search gõ opencv. Bỏ 2 cái đầu và cái cuối còn đâu bạn chọn hết rồi ấn Apply để cài đặt
Tiếp theo là add các thư viện của opencv vào Qt.
Khi tạo Project của Qt có xuất hiện một file .pro, file này sẽ quyết dịnh việc sử dụng module nào, thư viện nào cho Qt. Để add opencv vào project của Qt bạn thêm các lệnh sau vào file .pro
LIBS += -L/usr/local/include/opencv -lcv
LIBS += -L/usr/local/include/opencv -lhighgui
Mình sẽ tạo 1 class mới để capture hình ảnh. Trong project các bạn click chuột phải vào phần tên project, của mình ở đây vẫn là test. Sau đó bạn chọn Add new.... Bạn chọn C++ Class và ấn Choose.... Bạn đặt tên cho class. Ở đây mình đặt tên là "Camera" và chọn Base class là QWidget. Chọn Finish để kết thúc.
Sử dụng các hàm sau để lấy ảnh
CvCapture * camera = cvCreateCameraCapture(-1);
IplImage *pSaveImg = cvQueryFrame(camera);
Bước 3 : Chuyển kiểu IplImage sang QImage
Mình dùng hàm sau để chuyển kiểu
void putImage(IplImage *);void sipLCA:utImage(IplImage *cvimage)//chuyen tu kieu IplImage sang QImage
{
int cvIndex, cvLineStart;
switch (cvimage->depth) {
case IPL_DEPTH_8U: //lua chon chieu sau cua 1 kenh co ban
switch (cvimage->nChannels)
{
case 3: //lua chon 3 kenh co ban
if ( (cvimage->width != image_temp.width()) || (cvimage->height != image_temp.height()) )
{
QImage temp(cvimage->width, cvimage->height, QImage::Format_RGB32);
image_temp = temp;
} //chuyen doi chieu rong chieu cao dinh dang anh tu opencv sang qimage
cvIndex = 0; cvLineStart = 0;
for (int y = 0; y < cvimage->height; y++)
{
unsigned char red,green,blue;
cvIndex = cvLineStart;
for (int x = 0; x < cvimage->width; x++)
{
red = cvimage->imageData[cvIndex+2];
green = cvimage->imageData[cvIndex+1];
blue = cvimage->imageData[cvIndex+0];
image_temp.setPixel(x,y,qRgb(red, green, blue));
cvIndex += 3;
}
cvLineStart += cvimage->widthStep; //sao chep cac diem anh tu opencv sang qimage
}
break;
}
break;
}
}Last edited by tuylipden; 21-09-2011, 00:09.
Leave a comment:
-
Mình viết trên máy tính nhúng dạng PC thôi. Về phần truyền video thời gian thực này hiện tại hướng của mình là capture hình ảnh từ WC (Dùng opencv)> Nén vài frame (Dùng ffmpeg ) > Truyền đi. Hiện tại mình đã hoàn thành việc truyền đi. Khoảng 100ms mình truyền đi 2 frame. Khổ một nỗi mình dùng UDP để truyền, cái ffmpeg nó nén frame theo chuẩn MPEG-4. Nếu rớt một gói thôi là đứt luôn cả file, không thể hiển thị được. Mình nghĩ mãi mà chưa tìm ra cách khắc phục.
Một số bài viết tiếp theo mình sẽ đưa ra những gì mình đã làm. Có thể công cụ và code chưa tối ưu. Mong anh em cùng giúp đỡ
Leave a comment:
Bài viết mới nhất
Collapse
-
Comment on Đồng hồ công tơ điện tửbởi qpdt03
-
Channel: Điện tử dành cho người mới bắt đầu
23-03-2024, 17:03 -
-
Comment on Đồng hồ công tơ điện tửbởi qpdt03
-
Channel: Điện tử dành cho người mới bắt đầu
23-03-2024, 17:03 -
-
Trả lời cho Đồng hồ công tơ điện tửbởi qpdt03Hình ảnh mạch của nó đây, mình mang đồng hồ điện tử ra đo giá trị điện trở dán ghi trên lưng các con điện trở trong mạch đều đúng, mà công tơ điện tử vẫn đo sai, không biết nó hỏng chỗ nào; đã ấn nút reset lại nhưng vẫn không đc. Nhờ các bác có kinh nghiệm giúp đỡ. Thanks!
-
Channel: Điện tử dành cho người mới bắt đầu
23-03-2024, 17:03 -
-
bởi qpdt03Mình mới mua 1 cái đồng hồ công tơ điện tử trên shopee; loại hiển thị 4 thông số V,A,W và tổng số Kwh nhưng về cắm thử đc 1 hôm thì chỉ số V báo 378v, cắm về 100v cũng báo 350v có bác nào biết cách sửa chữa nó không chỉ giúp mình nhé. Xin cảm ơn mọi người đã đọc bài.
-
Channel: Điện tử dành cho người mới bắt đầu
23-03-2024, 16:46 -
-
bởi notooth1Các bạn xem giúp mình đây là tụ phân cực hay không phân cực nhé.
...-
Channel: Hướng dẫn tìm thông tin linh kiện
20-03-2024, 18:06 -
-
bởi carl22Xin chào tất cả mọi người.
Tôi hiện đang chế tạo một máy phay CNC. Máy phay được điều khiển thông qua Raspberry Pi 3 b+ và Smoothieboard v1.1 với trình điều khiển động cơ bước ACT DM 542 và động cơ 1,8° 2A.
Trục X 1,8° 3 A chạy qua trình điều khiển động cơ bước vì bảng sinh tố chỉ...-
Channel: Cơ cấu chấp hành (Actuator)
20-03-2024, 15:48 -
-
bởi ningoleChào các bác! Em là newbie về điện tử đang muốn làm một cái đèn báo cho ổ cắm nhưng chưa rành về mạch mong các bác giúp đỡ!
Nhu cầu của e là muốn làm 1 đèn báo nguồn AC 220V:
Nguồn 220v -> Phích cắm -> nối với 1 ổ cắm....-
Channel: Điện tử dành cho người mới bắt đầu
20-03-2024, 11:09 -
-
Trả lời cho có cần thiết phải lắp mạch bms cho khối pin ?bởi bao98Tất nhiên là bạn cần nó!
BMS là một phần không thể thiếu trong hệ thống ắc quy của xe điện.
nếu bạn không cài đặt BMS, có thể xảy ra vấn đề về pin, thậm chí có thể dẫn đến tai nạn-
Channel: Điện tử dành cho người mới bắt đầu
19-03-2024, 22:51 -
-
Trả lời cho [đồ án] xung đột nguồn điện 12vbởi bao98Để tìm hiểu xem bộ điều hợp UART của bạn được kết nối với cổng USB nào trên Raspberry Pi, bạn có thể sử dụng lệnh ls /dev/ttyUSB* hoặc ls /dev/ttyACM* trong thiết bị đầu cuối. Điều này sẽ liệt kê các cổng USB có sẵn để liên lạc nối tiếp. Cáp có thể được xem ở đây. Bạn cũng có thể kết nối và...
-
Channel: Hỗ trợ học tập
19-03-2024, 22:38 -
-
Trả lời cho cho hỏi move điện là g?bởi DiennuocAQLà sự tiếp xúc giữa 2 tiếp điểm không được tốt gây ra. Ví dụ như đầu dây điện cắm vào chân attomat nhưng lâu ngày ốc siết lỏng dần ra, làm dòng điện chuyển tiếp không tốt, gây ra hệ thống điện chập chờn gọi là move ạ
-
Channel: Điện tử dành cho người mới bắt đầu
19-03-2024, 12:40 -
Leave a comment: