6/20/2016
Matlab vector index shuffle
V1 =[ 10 20 30 40 50 60 70];
V2 = V1( :, randperm( length(V1) ));
V2 =
60 10 20 30 50 40 70
6/09/2016
OpenCV Mat and Matrix operation examples
example code.
...
...
Mat Ma = Mat::eye(3, 3, CV_64FC1); cout << Ma << endl; double dm[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; Mat Mb = Mat(3, 3, CV_64F, dm); cout << Mb << endl; //Matrix - matrix operations : Mat Mc; cv::add(Ma, Mb, Mc); // Ma+Mb -> Mc cout << Ma+Mb << endl; cout << Mc << endl; cv::subtract(Ma, Mb, Mc); // Ma-Mb -> Mc cout << Ma - Mb << endl; cout << Mc << endl; Mc = Ma*Mb; //Ma*Mb; cout << Mc << endl; //Elementwise matrix operations : cv::multiply(Ma, Mb, Mc); // Ma.*Mb -> Mc cout << Mc << endl; Mc = Ma.mul(Mb); cout << Mc << endl; cv::divide(Ma, Mb, Mc); // Ma./Mb -> Mc cout << Mc << endl; Mc = Ma + 10; //Ma + 10 = Mc cout << Mc << endl; //Vector products : double va[] = { 1, 2, 3 }; double vb[] = { 0, 0, 1 }; double vc[3]; Mat Va(3, 1, CV_64FC1, va); Mat Vb(3, 1, CV_64FC1, vb); Mat Vc(3, 1, CV_64FC1, vc); double res = Va.dot(Vb); // dot product: Va . Vb -> res Vc = Va.cross(Vb); // cross product: Va x Vb -> Vc cout << res << " " << Vc << endl; //Single matrix operations : Mc = Mb.t(); // transpose(Ma) -> Mb (cannot transpose onto self) cout << Mc << endl; cv::Scalar t = trace(Ma); // trace(Ma) -> t.val[0] cout << t.val[0] << endl; double d = determinant(Ma); // det(Ma) -> d cout << d << endl; Mc = Ma.inv(); // inv(Mb) -> Mc invert(Ma, Mc); cout << Mc << endl; //Inhomogeneous linear system solver : double dm2[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; Mat A(3, 3, CV_64FC1, dm2); Mat x(3, 1, CV_64FC1); double vvb[] = { 14, 32, 52 }; Mat b(3, 1, CV_64FC1, vvb); cv::solve(A, b, x, DECOMP_SVD); //// solve (Ax=b) for x cout << x << endl; //Eigen analysis(of a symmetric matrix) : float f11[] = { 1, 0.446, -0.56, 0.446, 1, -0.239, -0.56, 0.239, 1 }; Mat data(3, 3, CV_32F, f11); Mat value, vector; eigen(data, value, vector); cout << "Eigenvalues" << value << endl; cout << "Eigenvectors" << endl; cout << vector << endl; //Singular value decomposition : Mat w, u, v; SVDecomp(data, w, u, v); // A = U W V^T //The flags cause U and V to be returned transposed(does not work well without the transpose flags). cout << w << endl; cout << u << endl; cout << v << endl;...
OpenCV image and video write
image write
..
...
video write
http://study.marearts.com/2013/09/opencv-video-writer-example-source-code.html
..
Mat img = imread("ss.jpg"); vector< Mat> rgbMat(3); cv::split(img, rgbMat); namedWindow("img", 0); //make window imshow("img", rgbMat[2]); //show waitKey(0); imwrite("r.jpg", rgbMat[2]); imwrite("g.bmp", rgbMat[1]); imwrite("b.tif", rgbMat[0]);
...
video write
http://study.marearts.com/2013/09/opencv-video-writer-example-source-code.html
OpenCV Mat copyTo, Clone, ROI example code
OpenCV Mat copyTo, Clone, ROI example code
...
Mat img = imread("ss.jpg"); Rect r(img.cols / 4, img.rows / 4, img.cols / 4 * 2, img.rows / 4 * 2); //clone #1 Mat img2 = img.clone(); bitwise_not(img2, img2); //clone #2 Mat img5 = img(r).clone(); //copyTo #1 Mat cimg; img.copyTo(cimg); //copyTo #2 Mat cimg2; img(r).copyTo(cimg2); //copyTo #3 Mat cimg3( Size(img.cols*2, img.rows), img.type() ); cimg3.setTo(255); img.copyTo(cimg3(Range::all(), Range(0, img.cols))); img2.copyTo(cimg3(Range::all(), Range(img2.cols, img2.cols * 2))); //set roi Mat roi(img, r); //invert color bitwise_not(roi, roi); namedWindow("img2", 0); //make window imshow("img2", cimg); //show namedWindow("img3", 0); //make window imshow("img3", cimg2); //show namedWindow("img4", 0); //make window imshow("img4", cimg3); //show namedWindow("img5", 0); //make window imshow("img5", img5); //show namedWindow("img", 0); //make window imshow("img", img); //show waitKey(0);...
OpenCV Pixel Access, at, ptr, data, iteration (example)
I once wrote the following article.
http://study.marearts.com/2014/04/opencv-study-mat-point-access-method.html
This article is a sample code.
..
http://study.marearts.com/2014/04/opencv-study-mat-point-access-method.html
This article is a sample code.
..
#include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main(int, char) { namedWindow("img", 1); Mat img = imread("anapji.jpg"); if (img.depth() == CV_8U) printf("8bit unsigend\n"); img. /* cout << img.elemSize() << endl; cout << img.channels() << endl; cout << img.rows << endl; cout << img.step << endl; */ //using data //for (int i = img.rows / 10 * 7; i < img.rows / 10 * 8; i++) { //for (int i = 0; i < img.rows ; i++) { for (int i = img.rows / 10 * 7; i < img.rows / 10 * 8; i++) { for (int j = 0; j < img.cols; j++) { unsigned char r, g, b; b = img.data[i * img.step + j * img.elemSize() + 0]; g = img.data[i * img.step + j * img.elemSize() + 1]; r = img.data[i * img.step + j * img.elemSize() + 2]; img.data[i * img.step + j * img.elemSize() + 0] = unsigned char(255 - b); img.data[i * img.step + j * img.elemSize() + 1] = unsigned char(255 - g); img.data[i * img.step + j * img.elemSize() + 2] = unsigned char(255 - r); } } //using at for (int i = img.rows / 10 * 2; i < img.rows / 10 * 3; ++i) { for (int j = 0; j < img.cols; ++j) { //Vec3b means 'uchar 3ch' unsigned char b = img.at< cv::Vec3b>(i, j)[0]; unsigned char g = img.at< cv::Vec3b>(i, j)[1]; unsigned char r = img.at< cv::Vec3b>(i, j)[2]; //printf("%d %d %d\n", b, g, r); img.at< cv::Vec3b>(i, j)[0] = unsigned char(255 - b); //b img.at< cv::Vec3b>(i, j)[1] = unsigned char(255 - g); //g img.at< cv::Vec3b>(i, j)[2] = unsigned char(255 - r); //r } } //using ptr for (int i = img.rows / 10 * 5; i < img.rows / 10 * 6; i++) { cv::Vec3b* ptr = img.ptr< cv::Vec3b >(i); for (int j = 0; j < img.cols; j++) { unsigned char b1 = (ptr[j][0]); unsigned char g1 = (ptr[j][1]); //note!! unsigned char r1 = (ptr[j][2]); cv::Vec3b bgr = ptr[j]; unsigned char b2 = (bgr[0]); unsigned char g2 = (bgr[1]); //note!! unsigned char r2 = (bgr[2]); ptr[j] = cv::Vec3b(255 - b1, 255 - g1, 255 - r1); } } //using iteration cv::MatIterator_< cv::Vec3b> itd = img.begin< cv::Vec3b>(), itd_end = img.end< cv::Vec3b>(); for (int i = 0; itd != itd_end; ++itd, ++i) { cv::Vec3b bgr = (*itd); (*itd)[0] = 255 - bgr[0]; (*itd)[1] = 255 - bgr[1]; (*itd)[2] = 255 - bgr[2]; } imshow("img", img); //show waitKey(0); destroyAllWindows(); return 0; }..
input
output
5/16/2016
Serial communication(RS232C) source code (for wince and window)
The serial communication code is different for winCE and window.
In particular, Windows ce is attaching colon like 'com1:' an attempt to connect.
This attached code is very useful to start.
But comment is korean.
https://github.com/MareArts/ComThread
There are two folders. one is for wince, second is for window.
This source can be directly applied to the project.
Thank you.
In particular, Windows ce is attaching colon like 'com1:' an attempt to connect.
This attached code is very useful to start.
But comment is korean.
https://github.com/MareArts/ComThread
There are two folders. one is for wince, second is for window.
This source can be directly applied to the project.
Thank you.
5/11/2016
CString to char*
//CString -> char *
CString str;
str = "hello";
char * chr = LPSTR(LPCTSTR(str));
//char * -> CString
char chr[] = "hello";
CString str;
str.Format("%s", ss);
CString str;
str = "hello";
char * chr = LPSTR(LPCTSTR(str));
//char * -> CString
char chr[] = "hello";
CString str;
str.Format("%s", ss);
Subscribe to:
Posts (Atom)
-
Image size of origin is 320*240. Processing time is 30.96 second took. The result of stitching The resul...
-
This is data acquisition source code of LMS511(SICK co.) Source code is made by MFC(vs 2008). The sensor is communicated by TCP/IP. ...
-
Created Date : 2011.2 Language : C/C++ Tool : Microsoft Visual C++ 2010 Library & Utilized : OpenCV 2.2 Reference : Interent Refer...
-
Background subtractor example souce code. OpenCV support about 3 types subtraction algorithm. Those are MOG, MOG2, GMG algorithms. Det...
-
This post is about how to copy Mat data to vector and copy vector data to Mat. Reference this example source code. printf ( "/////...
-
I use MOG2 algorithm to background subtraction. The process is resize to small for more fast processing to blur for avoid noise affectio...
-
Logistic Classifier The logistic classifier is similar to equation of the plane. W is weight vector, X is input vector and y is output...
-
This example source code is to extract HOG feature from images. And save descriptors to XML file. The source code explain how to use HOGD...
-
EMD(earth mover distance) method is very good method to compare image similarity. But processing time is slow. For using the EMD compare, ...
-
* Introduction - The solution shows panorama image from multi images. The panorama images is processing by real-time stitching algorithm...