Postingan ini akan membahas tentang tracking warna di OpenCV. Sederhananya sih gitu.... Komponen yang digunakan adalah pengaplikasian findcontours dan moments. Dua hal tadi adalah wajib. findcotours digunakan untuk mendapatkan kontur pada seleksi warna HSV yang telah dilakukan. Kalau belum ngerti seleksi warna HSV, bisa dilihat postingan lama saya terdahulu di sini. moments digunakan untuk mencari titik beban (titik 0) pada sebuah kontur yang telah didapatkan. Untuk lebih cepatnya, seperti biasa hehehe langsung mencoba codingan saya saja. :)
Hasilnya kurang lebih seperti ini:
Codingan dari gambar diatas seperti ini:
Home » Archive for 2015
Membagi frame dengan teknik Region of Interest (ROI) - OpenCV
Di sesi ini saya akan membahas mengenai Region of Interest (RoI) pada OpenCV. Region of Interest itu sendiri fungsinya untuk membagi frame asli yang ditangkap oleh kamera menjadi beberapa bagian. Pembagian frame itu ditujukan apabila terdapat bagian yang penting untuk dilakukan pemrosesan citra. Mungkin lebih cepat jika langsung mencoba kodenya ya..!
Codingan yang digunakan adalah sebagai berikut:
Hasil RoI pada citra yang ditangkap:
Related Posts:
Menggambar garis pada frame camera - OpenCV
Kembali lagi dengan tulisan saya. Kali ini bertema membuat garis pada frame camera. Saya tulis ini karena berhubungan dengan tugas akhir saya hehehe.. langsung aja ya. Berikut hasilnya:
Maksud dari code di atas adalah sebagai berikut:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
if(!cap.isOpened())
return -1;
cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);
namedWindow("camera");
Mat frame, dst, cdst;
while (true)
{
cap>>frame;
GaussianBlur(frame, frame, Size(3,3),2,2);
line( frame, Point( 0, 120 ), Point( 320, 120), Scalar( 0, 0, 255 ), 2, CV_AA );
imshow("camera",frame);
if(waitKey(20) != -1)
break;
}
return 0;
}
Maksud dari code di atas adalah sebagai berikut:
line(
frame, // image yang akan digambar
Point(x,y), // point awal
Point(x,y), // point akhir
Scalar(0, 0, 255), //warna merah
2 // ketebalan garis
CV_AA // anti aliased line type
);
Related Posts:
Deteksi garis / Hough line transform dengan OpenCV
Selamat malam! Ketemu lagi deh... Maaf kemarin2 belum sempet update.
Sekarang lagi jaman2nya tugas akhir nih.. Makanya mau didokumentasiin.
Kali ini mau bahas mengenai deteksi garis dengan metode hough line transform lewat webcam. Tapi untuk postingan ini, belum saya tambahi dengan pengaturan threshold. Jadi, apapun yang terlihat sebagai garis lurus, akan terdeteksi sebagai garis, untuk kemudian ditarik garis berwarna merah yang menandakan bahwa suatu garis telah terdeteksi..
Saya kasih contoh hasilnya ya..
Berikut salinan code nya.. Silahkan digunakan sebaik mungkin:
Sekarang lagi jaman2nya tugas akhir nih.. Makanya mau didokumentasiin.
Kali ini mau bahas mengenai deteksi garis dengan metode hough line transform lewat webcam. Tapi untuk postingan ini, belum saya tambahi dengan pengaturan threshold. Jadi, apapun yang terlihat sebagai garis lurus, akan terdeteksi sebagai garis, untuk kemudian ditarik garis berwarna merah yang menandakan bahwa suatu garis telah terdeteksi..
Saya kasih contoh hasilnya ya..
Berikut salinan code nya.. Silahkan digunakan sebaik mungkin:
//BISMILLAH - Dzikri Purnama - Free to Copy&PasteSekian. Terima kasih mau menyempatkan membaca. Kalau bingung, tolong tulis di komentar saja ya.
//Deteksi garis - Hough line transform dengan OpenCV
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
if(!cap.isOpened())
return -1;
cap.set(CV_CAP_PROP_FRAME_WIDTH,320);
cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);
namedWindow("camera");
Mat frame, dst, cdst;
while (true)
{
cap>>frame;
GaussianBlur(frame, frame, Size(3,3),2,2);
imshow("camera",frame);
Canny(frame, dst, 50, 200, 3);
cvtColor(dst, cdst, CV_GRAY2BGR);
vector<Vec2f> lines;
// detect lines
HoughLines(dst, lines, 1, CV_PI/180, 150, 0, 0 );
// draw lines
for( size_t i = 0; i < lines.size(); i++ )
{
float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
line( cdst, pt1, pt2, Scalar(0,0,255), 2, CV_AA);
}
imshow("detected lines", cdst);
if(waitKey(20) != -1)
break;
}
return 0;
}
Related Posts:
Subscribe to:
Posts (Atom)