programing 65

[OpenCvSharp] Mat 자르기(SubMat)

이상하게 정리 했던거같은데... 다 없네 이미지를 profiling 하기위해 원하는 크기만큼 잘라야 한다.그런데... C++ 에서는Range 설정해서 자를 수 있었는데 C#은 또 다르네? 필요한 거슨 Rect 로 원하는 크기 설정.SubMat 메소드로 크기만큼 자르면 된다. 매우 간단. Rect rect = new Rect(300, 300, 300, 300); Mat dstMat = srcMat.SubMat(rect); 위의 소스 코드는 간단하다Rect 300, 300 기준으로 높이 너비 300, 300 사각형만큼 자른다는 것! 끝!

[OpenCvSharp] Mat 회전 (getRotationMatrix2D, warpAffine)

opencv 공부하면서 정리를 했던것 같은데 다시 쓰려고 보니까 정리한 글이 안보인다..OpenCvSharp은 조금 다르므로 다시 정리를 해보자. 내가 원하는 이미지를 회전 시켜보자앗. 우선 함수가 Cv2.GetRotationMatrix2D(), Cv2.WarpAffine() 가 사용된다. C#에서 사용될 것이므로 보여지는 것은 imshow()를 사용하는 것이 아니라 PictureBox에 표현할 것이다. 우선 회전하는 부분 코드만 옮겨 보자. Point2f pt = new Point2f(denoisingImgMat.Rows / 2, denoisingImgMat.Cols / 2); Mat rotate = Cv2.GetRotationMatrix2D(pt, degree, 1.0); rotateImgMat = ..

[OpenCvSharp] Mat to Bitmap

pictureBox를 사용해야 하는데 Mat을 그대로 사용할 수가 없다.Bitmap 으로 변환을 해주어야 하는데 고맙게도 함수가 있더이다. 참고 : http://blog.naver.com/PostView.nhn?blogId=nuren1&logNo=220727174546&redirect=Dlog&widgetTypeCall=true 참고사이트가.. 음.. 참고가 아니라 그냥 전부이다. Mat To Bitmap Mat mat = new Mat("test.jpg", ImreadModes.Color);// Mat mat = Cv2.ImRead("test.jpg", LoadMode.GrayScale); Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap..

[OpenCvSharp] 설치

OpenCv를 C#에서 사용하려면 OpenCvSharp를 설치해야 된다. 설치 방법은 매우.. 진짜 매우 간단하다. 환경 : Windows10 32bit, Visual Studio 2015 - 프로젝트를 생성하고 솔루션 탐색기로 간다. - 프로젝트이름 우클릭 >> NutGet 패키지 관리를 선택 - 찾아보기 > "opencvsharp" 검색 > "OpenCvSharp-AnyCPU" 선택 및 설치 - 위사진처럼 OpenCvSharp.CPlusPlus 추가 - 추가하지 않을 경우 c 에서 opencv 사용하는 것처럼 사용하면 됩니다.

cv::Mat copy to std::vector

opencv를 사용해서 개발을 시작할 때 Mat 을 vector로 바꾸는 작업을 했었다.그때는 틀림 없이 Mat::copyTo 함수를 사용해서 간단하게 했던것 같은데다시 작업을 하려니 되질 않네...다른 방법을 찾아 나섰다. 검색어 : 구글 - mat copyto vector for문을 이용해서 하는 방법도 많이 나오지만나는 함수 하나로 해결하고 싶었다. assign 함수를 사용하면 간단하게 끝낼 수 있다.vector 끼리 복사 할때 사용했었는데 Mat 도 적용 가능 하다. 자료형이 double인 변수를 복사하려면 Mat src; /* Mat을 채우는 작업 */ vector dst; dst.assign((double*)src.datastart, (double*)src.dataend); 이렇게 하면 한방에..

programing/OpenCV 2016.11.23

[STL] vector 복사

vector 복사하기.. 두가지 방법을 찾았다. copy()를 이용한 복사와 assign()을 이용한 복사이다. 출처 : http://ogoons.tistory.com/75// copy() 를 이용한 복사 destVector.resize((int)(sourceVector.size()));std::copy( sourceVector.begin(), sourceVector.end(), destVector.begin() );std::copy( sourceVector.begin() + 2, sourceVector.begin() + 5, destVector.begin() ); // assign() 을 이용한 복사 destVector.clear();destVector.assign( sourceVector.begin(..

programing/C++ 2016.10.31

[OpenCV] Mat 이미지 자르기

이론만 쭉 정리하다가 이제 실제로 필요한 것들만 찾아서 정리 하기로 했다. 내가 필요한거슨 이미지의 특정 부분만 사용할 것이라 잘라내는 과정이 필요했다. Mat을 Range로 범위를 지정할 수 있으므로 row와 col을 원하는 만큼 가져와서 출력해 보자. 예제 #include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main() { int offset, width, margin; offset = 50; width = 50; margin = 5; Mat img = imread("Img4.png",IMREAD_GRAYSCALE); cout

programing/OpenCV 2016.10.21

[OpenCV] Mat 클래스 행렬 생성 1

Mat 클래스는 C++ API에서 가장 중요한 클래스 중 하나로 1채널 또는 다채널의 실수, 복소수, 행렬, 영상 등의 수치 데이터를 표현하는 n차원 행렬 클래스이다. 행렬 생성Mat 클래스는 다양한 생성자를 통하여 행렬을 생성한다.행렬의 크기는 rows, cols, size로 명시type은 자료형으로 CV_8UC1 ... CV_32FC1 ... 등을 사용 한다.생성자를 다 써 놓는것보다 예제를 통해서.. 알아보자. 행렬 생성 예제 #include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main() { Mat A(2,3,CV_8UC1); Mat B(2,3,CV_8UC1, Scalar(0)); Mat C(2,3,CV_8UC3, ..

programing/OpenCV 2016.10.20