2011-11-16 4 views
5

opencv에 두 개의 이미지가 있습니다. 이미지 A이미지 B입니다.opencv에서 강도를 잃지 않고 두 이미지를 병합하는 방법

이미지카메라의 출력 프레임입니다.
이미지 B마스킹 이미지 1 개로 얻은 알파 투명 이미지입니다. 심지어 여기 당신이 전체적인 강도를 푼다 - 당신은 알파와 베타 값

  • 내가 aishack 시도를 줄 때 그것은 강도를 푼다-
    이미지 B 마스킹하기 전에 내가 cvAddWeighted()을 시도 cvWarpPerspective()

    • 으로 휘어지는 출력 이미지
    • 시도했습니다. silveiraneto.net- 제 경우에 도움이되지 않습니다.

    혼합 후 출력 이미지의 강도를 잃지 않는 곳에서 도와주세요. 사전

  • 답변

    2

    드디어 답변을 얻었습니다. 5 단계로 구성되어 있습니다 ....

    단계 - 1

    cvGetPerspectiveTransform(q,pnt,warp_matrix); 
    //where pnt is four point x and y cordinates and warp_matrix is a 3 x 3 matrix 
    

    단계 - 2

    cvWarpPerspective(dst2, neg_img, warp_matrix,CV_INTER_LINEAR) 
    //dst2 is overlay image ,neg_img is a blank image 
    

    단계 - 3

    cvSmooth(neg_img,neg_img,CV_MEDIAN); //smoothing the image 
    

    단계 - 4

    cvThreshold(neg_img, cpy_img, 0, 255, CV_THRESH_BINARY_INV); 
    //cpy_img is a created image from image_n 
    

    단계 - 5

    cvAnd(cpy_img,image_n,cpy_img);// image_n is a input image 
    cvOr(neg_img,cpy_img,image_n); 
    

    는 출력 - image_n

    +0

    그러면 안티 알리아없이 오버레이. 당신은 두 단계로 할 수 있습니다 : 1) warp_matix를 얻으십시오, 2) warpPerspective (pic, frame, warp_matrix, frame.size(), INTER_LINEAR, BORDER_TRANSPARENT); –

    2

    에서

    덕분에 당신은 당신이 강도를 잃게 ... 당신은 당신이 그것을 잃게하는 방법에 대한 질문을두고 말할 때? 당신은 이미지를 추가 할 때

    당신이 최대 강도를 쳤다고, 나머지는 폐기 :

    는 의미에서 당신에게 느슨한 강도를 수행합니다.(8 비트 픽셀 추가에 대한 예 : Pix1 = 200i, Pix2 = 150i, "Pix1 + Pix2 = 350"그러나 255에서 최대 값이므로 Pix1 + Pix2 = 255)

    이미지의 이전 값 A는 이미지의 일부분만을 덮는 이미지 B에 추가함으로써 손상됩니다. (Pix1 + Pix2)/2 = 175이지만, 제 2 화상의 화소 값이 0 일 때, Pix2 = 0이된다. (Pix1 + Pix1 + Pix2) Pix2)/2 = 100, 원본 이미지 값의 절반)

    이러한 관찰 중 하나는 수행해야 할 작업에 대해 알려야합니다. 언급 한 기능에 따라 어떤 접근 방식을 사용하는지 잘 모르겠습니다.

    +0

    그에 대한 대답 +1 주셔서 감사하지만 (입력 영상의 강도를 잃어버린없이) 내가 여기에 필요한 당신이 포토샵에서 안경 이미지 (png 투명)를 가지고 있다고 가정 해 봅시다. 이미지를 누군가의 얼굴 (다른 이미지)에 오버레이하고 앞면과 뒷면으로 가져 오는 것을 조절하여 어떻게 오버레이합니까? 같은 것 나는 opencv에서하고 싶다 ... 내 질문은 ... 당신이 말하는 모든 것은 ... 나는 그것을 피할 어떤 방법이 필요하다. ... – Wazzzy

    +0

    빨강 녹색의 경우 RGB (A)와 같은 4 채널 img로 작업 할 수 있다면 파란색과 aplha, 대신 RGB와 같은 3 채널. 이미지 A의 각 픽셀 (뒷면의 이미지)을 새 이미지 (투명 필름 포함)로 변경하고 알파 채널을 기준으로 0에서 1까지의 눈금으로 변경하여 추가 할 수 있습니다. 나는 아직도 정확한 코드 예제를 제시 할 수 없다. – Sonaten

    +0

    또한. 투명도가 정교하게 _On 및 Off_ 값인 경우 투명 이미지의 각 픽셀에 대한 알파 값을 확인한 다음 알파 값이 "참"이면 해당 값을 배경 이미지에 씁니다. – Sonaten

    관련 문제