C++ openCV API를 사용하고 있으며 이미지의 특정 픽셀 만 선택적으로 흐리게 처리하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 하위 행렬을 통해 그것을 시도했지만 그것을 작동시키지 못했습니다.이미지의 OpenCV 필터링 부분
//5 is the 'radius' i'm blurring (~1/2 kernel width)
cv::Rect srcRect;
srcRect.x = x - 5;
srcRect.y = y - 5;
srcRect.width = 2*5 + 1;
srcRect.height = 2*5 + 1;
cv::Rect dstRect;
dstRect.x = x;
dstRect.y = y;
dstRect.width = 1;
dstRect.height = 1;
cv::Mat src = srcImage(srcRect);
cv::Mat dst = dstImage(dstRect);
cv::blur(src, dst, cv::Size(5,5));
위 코드를 사용하면 아무 것도 변경되지 않습니다.
두 사각형을 모두 srcRect로 설정하면 하위 이미지가 흐리게 보이지만 단일 픽셀 대신 전체 dst가 흐려집니다.
아이디어가 있으십니까?
의 복제 이미지이다. 기본적으로 단일 픽셀을 수정하고 주변의 모든 값의 평균 값으로 설정하려고합니다. 어떤 아이디어? –
OpenCV에는 기본 보더 보간 방법이 있기 때문에 자신 만의 블러 링을 구현해야한다고 생각합니다. 또는 dst를 src만큼 큰 별도의 이미지로 만들고, 정의한대로 src를 유지하고, orig dstImage에있는 dst의 중심을 복사하십시오. – Sam
사실, 코드에서 cv :: blur는 새로운 dst 행렬을 만들어 버립니다 src와 크기가 같지 않기 때문에 사용자가 설정합니다. 중앙 픽셀을 dstImage로 다시 복사하기 만하면됩니다. – Sam