슬레이트의 모션 센서 사용 (C#)...

어디에도 정리된 자료를 찾을 수 없어 상당히 헤맸다.

겨우 첫걸음을 내딛은 것을 자축하며 아주 기본적인 설정 및 구현 방법을 올린다.

 

  1. "Windows API Code Pack for .NET framework"를 설치한다. http://archive.msdn.microsoft.com/WindowsAPICodePack
  2. dll 파일을 이용해 프로젝트에 Microsoft.WindowsAPICodePack.Sensors 어셈블리 참조를 추가한다.
  3. 다음과 같이 테스트.

 

SensorList<Accelerometer3D> Accelerometers;
private void Form1_Load(object sender, EventArgs e)
{

Accelerometers = SensorManager.GetSensorsByTypeId<Accelerometer3D>();
Accelerometers[0].DataReportChanged += new DataReportChangedEventHandler(Form1_DataReportChanged);

}

 

void Form1_DataReportChanged(Sensor sender, EventArgs e)

{

foreach (var key in Accelerometers[0].DataReport.Values.Keys)
Debug.WriteLine(Accelerometers[0].DataReport.Values[key][0]);

}

 

"Introducing Windows 7 for Developers"이라는 책이 도움이 많이 되었다.

 

 

 

 

[2012.4.6] 페이지 번호 서식에 관한 한가지 팁을 추가한다.

페이지 번호가 67이라면 6 7 이런 식으로 간격이 벌어져 보이는 경우가 있다.

이건 한글입력체계 문제도 아니고 진짜 해결하기 힘든 건데...

결론만 말하자면,

바닥글의 페이지 번호에서 "필드 편집"을 누르면 필드 선택에 "Page", 필드 속성에는 아무 것도 선택되어있지 않을 것이다.

필드 속성의 '형식' 중에서 1,2,3 ... 을 선택하자. (1, 2, 3 ... 아님)

해결!

했다고 생각했는데... 목차에서 여전히 이런 현상이 나타나더라 (페이지 번호가 이상하지?)...

 

이건 처음에 페이지번호 넣을때 잘못 선택한 거였다!

필드 속성 말고, 처음에 페이지번호 넣을때 서식을 선택할 수 있으니 거기서 1,2,3을 선택하자!

 

이번에도 시간이 없으니 일단 사진만 올린다... 그냥 간단히 설명도 붙인다.

 원래 각주. 번호가 꼭 따라 붙는다.

번호를 없애려면 각주 리본 우하단의 확장(?) 버튼을 누르자.

 그럼 다음과 같이 각주 삽입 시에 옵션 설정이 가능하다.

 사용자 지정 표시를 선택한 다음, 아래와 같이 아무것도 없는 기호를 선택하자.

이제 번호 없는 각주가 삽입되었다. 그런데 각주 구분선 아래 저 엄청난 공백은 뭐냐?

이 공백을 조절하는 것도 대단한 팁이 필요하다. ㅋㅋ
http://answers.microsoft.com/en-us/office/forum/office_2007-word/edit-footnote-separator/ee405601-5f08-416b-ab5f-1eb886209d43

아래와 같이 초안(draft) 보기를 선택한다. 제일 아래 다섯 개의 보기 버튼(줌 설정 옆에 있는)에서 선택하면 쉽다.

다시 참조 > 각주 리본으로 가서 > 각주/미주 표시 클릭

아래 각주 설정이 표시된다. 그 중에서 각주 구분선을 선택.

어떻게 조절할지 난감하지만, 일단 공백을 삭제하고

구분선 길이가 조절 안 된다. 하나 복제하자.

대략 원하는 각주 모양이 완성되었다.

 

 

[2012.4.6] 페이지 번호 서식에 관한 한가지 팁을 추가한다.

페이지 번호가 67이라면 6 7 이런 식으로 간격이 벌어져 보이는 경우가 있다.

이건 한글입력체계 문제도 아니고 진짜 해결하기 힘든 건데...

결론만 말하자면,

바닥글의 페이지 번호에서 "필드 편집"을 누르면 필드 선택에 "Page", 필드 속성에는 아무 것도 선택되어있지 않을 것이다.

필드 속성의 '형식' 중에서 1,2,3 ... 을 선택하자. (1, 2, 3 ... 아님)

해결!

 

 

 


전에 WinDirStat이란 훌륭한 폴더별 사용량 분석 프로그램을 소개한 바 있으나, 이넘은 탐색기에서 별도의 컨텍스트메뉴를 제공하지 않는다는 아쉬움이 있었다.

다음과 같이 약간의 레지스트리 편집을 통해 'WinDirStat' 커맨드를 탐색기에 추가할 수 있다.


탐색기 폴더 컨텍스트메뉴에 'WinDirStat'이 추가된 모습.
아이콘은 왜 표시가 안 되는지 모르겠다. ㅋㅋ


어떤 폴더든 오른쪽 클릭하고 'WinDirStat'을 선택하면 바로 분석 들어간다.


분석이 완료된 결과. 어떤 놈이 큰 용량을 차지하고 있는지 한눈에 알 수 있다. OpenCV 폴더를 돌려본 결과 대부분은 파란색으로 표시된 .pch 파일들이 먹고있었다.



참고:
http://stackoverflow.com/questions/509508/how-do-i-right-align-controls-in-a-statusstrip

즉 컨트롤의 'spring' 속성을 True로 하면 된다.


그것은 프로젝트 속성 > 디버그 > 디버거 사용 > 비관리 코드 디버깅 사용이 체크되어있기 때문이다.
언체크!

symbolic toolbox에서의 norm

개발과 트러블슈팅 2012. 2. 22. 16:03 Posted by 양고
http://www.mathworks.com/matlabcentral/newsreader/view_thread/299602

sym objects에 대해 norm은 정의되어 있지 않다.
따라서 직접 원하는 함수를 써야 한다.
즉 sqrt(sum(V.^2)); 이런 식으로.

참고: http://www.mrexcel.com/forum/showthread.php?t=82540

한 시트에는 신입사원의 사번과 나이, 다른 시트(파일)에는 전사원의 사번과 부서가 있다고 하자. 이를 병합해서 하나의 레코드로 만들려면 어떻게 할까?

vlookup을 쓰면 해결된다.
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)




현재로서는 추가되는 모든 필드에 대해 작업을 해줘야 하는 불편함이 있긴 하다.


[문제]
다음 키즈짱에서 뽀로로 등 DRM 걸린 영상을 재생하는데, 보안 업그레이드를 해야한다는 창이 나타나 "확인"을 클릭했으나 80070002 에러 발생. 수동으로 DRM 업그레이드 시도할 경우 역시 "관련 파일 삭제 실패" 에러 발생. 관리자 권한으로 실행해도 마찬가지.


[도움 안 되는 다음 측 답변]
- 팟플레이어 삭제 후 재설치
- 팟플레이어 폴더의 'ndivUtil.exe 파일' 또는 'DRM 업그레이드'실행
- Security component upgrade 하기
- 기타 윈도 미디어 플레이어 관련한 모든 방법을 동원했지만 모두 실패. 보안 업그레이드 시도만 백 번은 넘게 한 것 같다. 젠장...


[실제 해결 방법]
수동으로 DRM 업그레이드를 할 경우 파일 삭제를 실패한다는 것이 수상쩍었다.
키즈짱에 접속해서 팟플레이어 업그레이드할 때도 뭔가 파일이 사용중이기 때문에 실패하는 것으로 생각되었다.
따라서 ProcessMonitor를 동원해 어떤 파일이 실제 사용되는지를 조사했다.


워낙 파일 액세스가 많아서 어느 것이라고 특정하기는 어렵지만, 그림의 선택된 부분이 의심스럽지 않은가?
그냥 C:\ProgramData\Microsoft\Windows\DRM 폴더를 통째로 지워버렸다.


올레~!
키즈짱 뽀로로 동요에 접속해서 보안 업그레이드 하니 드디어 다운로드 시작!
몇 주에 걸친 해결 노력이 성공해서 더욱 기쁘다. ㅠㅠ

Converting Between YUV and RGB

개발과 트러블슈팅 2011. 11. 14. 17:13 Posted by 양고
YUV422에서 RGB로 2:1 리샘플링한다.
이 때 괜히 위키피디아에 있는 YUV 문서 들어가면 주화입마에 빠질 수 있으며, 간단하게 변환하는 방법이 있어서 소개한다.
현재는 UYVY->BGR 리샘플링했을 때 8-core CPU임에도 점유율이 높은 것이 문제다.
디버그 모드: 약 10%,
릴리스 모드: 약 5~7% 정도.

// http://yango.tistory.com/185
byte clip(int i)
{
 if(i < 0)
  return 0;
 else if(i > 255)
  return 255;
 else
  return i;
}
void Resample(Mat& image, byte* src)
{
 for(int y = 0; y < 540; y++)
 for(int x = 0; x < 960; x++)
  image.data[x+y*960] = (src[2*y*1920*2 + 4*x+1]+src[2*y*1920*2 + 4*x+3])/2; // UYVY
}
// http://msdn.microsoft.com/en-us/library/ms893078.aspx
void Resample3(Mat& image, byte* src)
{
 int Y,U,V, C,D,E;
 for(int y = 0; y < 540; y++)
 for(int x = 0; x < 960; x++)
 {
  Y = (src[2*y*1920*2 + 4*x+1]+src[2*y*1920*2 + 4*x+3])/2;
  U = src[2*y*1920*2 + 4*x];
  V = src[2*y*1920*2 + 4*x+2];
  C = Y - 16;
  D = U - 128;
  E = V - 128;
  image.data[3*(x+y*960)]  = clip((298*C + 516*D + 128) >> 8);   // B
  image.data[3*(x+y*960)+1] = clip((298*C - 100*D - 208*E + 128) >> 8); // G
  image.data[3*(x+y*960)+2] = clip((298*C + 409*E + 128) >> 8);   // R
 }
}


클리핑 하기 전과 후 사진.


참고자료: http://msdn.microsoft.com/en-us/library/ms893078.aspx


Converting Between YUV and RGB

Windows CE .NET

It is frequently necessary to convert between YUV pixel formats (used by the JPEG and MPEG compression methods) and RGB format (used by many hardware manufacturers.) The following formulas show how to compute a pixel's value in one format from the pixel value in the other format.

YUV format allows for higher compression rates without a proportionately high loss of data, as the U and V portions can be highly compressed and computed from the non- or lowly-compressed Y portion.

Computer RGB888, or full-scale RGB, uses 8 bits each for the red, green, and blue channels. Black is represented by R = G = B = 0, and white is represented by R = G = B = 255. The 4:4:4 YUV format uses 8 bits each for the Y, U, and V channels.

Converting RGB888 to YUV

The following formulas define the conversion from RGB to YUV:

Y = ( (  66 * R + 129 * G +  25 * B + 128) >> 8) +  16
U = ( ( -38 * R -  74 * G + 112 * B + 128) >> 8) + 128
V = ( ( 112 * R -  94 * G -  18 * B + 128) >> 8) + 128

These formulas produce 8-bit results using coefficients that require no more than 8 bits of (unsigned) precision. Intermediate results require up to 16 bits of precision.

Converting 8-bit YUV to RGB888

The following coefficients are used in conversion process:

C = Y - 16
D = U - 128
E = V - 128

Using the previous coefficients and noting that clip() denotes clipping a value to the range of 0 to 255, the following formulas provide the conversion from YUV to RGB:

R = clip(( 298 * C           + 409 * E + 128) >> 8)
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
B = clip(( 298 * C + 516 * D           + 128) >> 8)

These formulas use some coefficients that require more than 8 bits of precision to produce each 8-bit result, and intermediate results require more than 16 bits of precision.

Note   All units range from 0 (zero) to 1.0 (one). In DirectDraw, they range from 0 to 255. Overflow and underflow can (and does) occur, and the results must be saturated.

To convert 4:2:0 or 4:2:2 YUV to RGB, convert the YUV data to 4:4:4 YUV, and then convert from 4:4:4 YUV to RGB.


 Last updated on Thursday, April 08, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.