1
2
3
4
5
6
7
8
9
10
for(int i=0;i<sketch.cols;i++){
        for(int j=0;j<sketch.rows;j++){
            if(blur.at<uchar>(j, i) == 255){
                result.at<uchar>(j, i) = sketch.at<uchar>(j, i);
            }
            else{
                result.at<uchar>(j, i) = min(255, (sketch.at<uchar>(j, i)<<8)/(255-blur.at<uchar>(j, i)));
            }
        }
    }
cs


위 코드처럼 color dodge 함수를 만들고 테스트해봤더니 계속 abort() has been called 오류가 났다.

처음에는 여러개의 Mat들이 얕은 복사로 연결되어 있어서 오류나는 줄 알았는데 아니었다.


결과물을 저장할 result가 초기화되지 않아 지정 위치의 픽셀에 접근할 수가 없었던 것

result를 초기화 시켜주고 픽셀에 접근하니 잘 됐다.

'이미지 프로세싱 > OPENCV' 카테고리의 다른 글

[3.0.0] Mat 배경 투명하게 만들기  (0) 2017.02.14
[3.0.0] VS2015/openCV3.0.0 개발환경 설정  (0) 2017.01.20
[2.4.10] jpeg 이미지 디코딩  (0) 2017.01.04
[2.4.10->3.0] Mat의 기초  (0) 2016.11.30
[2.4.10] cvType  (0) 2016.11.25
1
2
3
4
5
6
7
8
HANDLE pMem = (HANDLE)GlobalLock(hPicture);    //hPicture은 전달받은 jpeg 이미지 파일 핸들
 
//가져온 메모리 주소를 이용하여 jpeg 디코딩
Mat encodedData = Mat(1280960, CV_16UC3, pMem);    //1280*960사이즈의 이미지 파일
Mat decodedImage = imdecode(encodedData, IMREAD_COLOR);
 
//성공
imshow("decode", decodedImage);
cs


이미지 파일을 jpeg 형태로 전달해주는 핸들을 가지고 작업을 해야했다.

jpeg 자체는 코드내에서 처리하지 못하므로 비트맵으로 변환해주어야 했다.

jpeg->bmp로 변환해주기 위해 디코딩함


openCV의 imdecode 함수를 사용했음



switch문에서 변수를 선언하여 사용하려 할 경우 변수를 선언하지 않은 다른 case문에서 오류가 발생함


1
2
3
4
5
6
7
switch (val) {
     case 1
          int newVal = 42
          break
      case 2
          break
}
cs


case 지정은 switch내 해당하는 label로 점프하기 위하여 사용됨


블록이 시작하면 지역변수를 위한 공간이 메모리에 할당

그러나 val != 1 일 경우 초기화 부분이 실행되지 않는 문제점이 생겨버림

위 코드는 블록이 하나밖에 없는 상태이기 때문


case마다 블록을 지정해주면 다른 case에서 초기화 하지 않아도 됨


1
2
3
4
5
6
7
8
switch (val) {
     case 1: {
          int newVal = 42
          break
     }
      case 2
          break
}
cs


http://hashcode.co.kr/questions/372/%EC%99%9C-%EC%8A%A4%EC%9C%84%EC%B9%98-%EB%AC%B8%EC%97%90%EC%84%9C%EB%8A%94-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%84%A0%EC%96%B8%ED%95%A0-%EC%88%98-%EC%97%86%EC%96%B4%EC%9A%94

'C++' 카테고리의 다른 글

[C++] vector의 resize  (0) 2017.06.02
[라이브러리] string class 함수  (0) 2016.03.01

+ Recent posts