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)
-
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 is data acquisition source code of LMS511(SICK co.) Source code is made by MFC(vs 2008). The sensor is communicated by TCP/IP. ...
-
Image size of origin is 320*240. Processing time is 30.96 second took. The result of stitching The resul...
-
RTSP(Real Time Streaming Protocol) is video streaming, it usually sent from network camera. VideoCapture function in opencv also can get r...
-
Background subtractor example souce code. OpenCV support about 3 types subtraction algorithm. Those are MOG, MOG2, GMG algorithms. Det...
-
Created Date : 2011.2 Language : C/C++ Tool : Microsoft Visual C++ 2010 Library & Utilized : OpenCV 2.2 Reference : Interent Refer...
-
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...
-
After training SVM, we should test the trained XML data is reliable or not.. The method to extract HOG feature is refer to -> http://fe...
-
EMD(earth mover distance) method is very good method to compare image similarity. But processing time is slow. For using the EMD compare, ...
-
The MNIST dataset is a dataset of handwritten digits, comprising 60 000 training examples and 10 000 test examples. The dataset can be downl...
