ETC 105

[C#] openFileDialog.FileName에서 파일 이름만(Path.GetFileName)

OpenFileDialog로 파일 경로를 구해온 뒤FileName에서 파일 이름만 구해오고 싶다.어떤 사람은 "\\"위치에서 그다음 인덱스를 이용해서 구해오는 사람도 있었으나.. 매우 간단하게 구해주는 함수가 있어서 정리할 겸 공유 할겸 정리를 해본다. 우선 경로에서 파일 이름과 확장자 를 가져오는 방법은Path.GetFileName(openFileDialog1.FileName); 위의 방법으로 하면 파일명과 확장자를 전부 가져 온다. 사실 내가 필요한건 확장자를 빼고 파일명만 가져오고 싶었다. 확인결과 역시나 함수가 있었다. Path.GetFileNameWithoutExtension(openFileDialog1.FileName); 위의 방법을 사용하면 확장자를 뺀 파일명만 리턴해준다. 매우 간단 ㅇㅈ?..

ETC/C# 2016.12.22

[C#] CSV 파일 만들기(string.Join 함수)

CSV 파일을 만들어야 한다.내가 원하는 기능은 1. 한줄씩 파일에 입력하는 것.2. listbox에 있는 데이터를 csv에 입력하는 것.3. chart에 있는 y축 값을 차례대로 csv에 입력하는 것. 우선 코드를 다 붙여놓고 설명을 해보자. private void btnSaveAngle_Click(object sender, EventArgs e) { //저장 위치 결정. SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.InitialDirectory = System.Environment.CurrentDirectory; saveDlg.Filter = "csv (*.csv)|*.csv|txt (*txt)|*.txt|All files (*.*)|*.*"; i..

ETC/C# 2016.12.20

[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 사각형만큼 자른다는 것! 끝!

ETC/OpenCvSharp 2016.12.06

[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 = ..

ETC/OpenCvSharp 2016.12.06

[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..

ETC/OpenCvSharp 2016.12.01

[OpenCvSharp] 설치

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

ETC/OpenCvSharp 2016.12.01

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); 이렇게 하면 한방에..

ETC/OpenCV 2016.11.23

[Linux] vi 스왑 파일(E325)

예전에 작성한 파일을 열려고 했는데 'Found a swap file by the name `이라며 읽기 전용으로만 열렸다..대충 검색에 의하면 vi로 파일을 열게 되면 스왑 파일이 생기는데 vi가 정상 종료 되면 이 파일이 자동으로 삭제가 되지만비정상 종료 될 경우 이 파일이 남아 있어 다음에 또 열게 되면 이와 같은 에러가 발생한다고 한다. 위의 사진이 파일을 열었을 때 나오는 화면이다.파일이 열려 있다는 이야기 인데.. 10일 전부터 열려 있네 ? 해결방법을 알아보자.우선 다른 프로세스가 사용중인지 확인ps -ef | grep (파일명) 한줄이 나온다면 사용중인 프로세스가 없는 것이고그렇지 않다면 사용중인 프로세스가 있는 것이니그 프로세스를 중지 하고 수정하면 될 것이다. 나같은 경우 한줄이 나왔다..

ETC/Linux 2016.11.01

[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

ETC/OpenCV 2016.10.21