-
[OpenCV, C++] alpha 채널이 있는 이미지 합성(블랜딩) 오류 해결Computer Vision & AI/OpenCV 2022. 6. 14. 11:34
기본적인 오류들은 채널 수, 타입, 사이즈 확인정도면 디버깅이 가능하다.
(대부분의 오류는 Mat연산시에 위의 내용들이 맞지 않아서 발생했다.)
지금 생겼던 오류는 배경에 로고를 합성할 때 나타났는데,
logo 이미지에 alpha채널까지 4채널이라 소스 이미지에 바로 연산을 할 수 없었다(소스=3채널)
그래서 cvtColor함수로 BGRA2BGR 변환을 했는데
로고가 이상하게 변형되었다.......
원인은!
로고를 만들때에 있었다.
B,G,R 채널의 배경이 검은색(0값)이 아니라 다른 색이 있었고 그 위에 알파채널을 씌웠기 때문에 배경이 투명하게 보였었는데, 3채널로 변환하니 알파채널이 제대로 적용되지 않았던 것.
그래서 이상한 로고에 마스킹을 한번 더 해서 해결하였다.
또 주의사항은 copyTo로 마스킹 할 때 src, dst 가 같은 Mat이면 제대로 되지 않았기 때문에 temp Mat을 만들어야 했다.
'Computer Vision & AI > OpenCV' 카테고리의 다른 글
[OpenCV & C++] flip을 사용할 때 이미지가 반 갈라지는 문제 해결 (0) 2022.11.17 YOLO C++ detect 에러 (C2664) (0) 2022.11.09