픽셀 단위로 분석하지 않고 두 이미지에 연산을 수행하는 방법이 있는지 알고 싶습니다. 나는 실시간으로 두 대의 카메라로 믹스 뷰를 만들려고한다. 그것으로 인해 최소한 초당 10 프레임의 속도로 작동해야합니다.버퍼를 사용하지 않고 2 개의 이미지 (덧셈, 뺄셈 등)에 대한 연산을 수행합니다.
CPylonImage im1;
CPylonImage im2;
uint32_t width = im2.GetWidth();
uint32_t height = im2.GetHeight();
uint8_t* buffer1 = static_cast<uint8_t*>(im1.GetBuffer());
uint8_t* p1 = buffer1;
uint8_t* buffer2 = static_cast<uint8_t*>(im2.GetBuffer());
uint8_t* p2 = buffer2;
for (uint32_t y = 0; y < height; ++y)
{
for (uint32_t x = 0; x < width; ++x, ++p1)
{
*p2 = (uint8_t)*p1+*p2;
++p2;
}
}
ShowImage(im2, "Mixed image");
을하지만이 너무 느렸다 : 내 프로그램의
첫 번째 버전은 다음과 같습니다.
답변에 대해 매우 감사드립니다.
제목에 "버퍼없이"라고 표시되어 있지만 질문에 "픽셀 단위가 아닙니다."라고 표시되어 있습니다. 상호 배타적이지 않습니까? 너 진짜 원하는게 뭐야? "버퍼가 없다"는 것은 무엇을 의미합니까? 어떻게하면 각 픽셀에 대해 그렇게하지 않고 한 이미지를 다른 이미지에서 빼기를 기대합니까? – stijn
SSE 명령을 사용하여 한 번에 4 바이트로 처리 할 수 있습니다. 그러나 진짜 질문은 : 당신은 병목 현상이이 특정 행동에 있다는 것을 알 수 있습니까? 무슨 결의안을 말하고있는거야? – RedX
명확하게하기 위해 이전 코드의 일부를 추가했습니다. 어쩌면 전체 이미지에 버퍼를 추가 할 수 있습니다. 내가 어떻게 만들 수 있니? 카메라의 해상도는 1294 픽셀 x 964 픽셀입니다. – CherryCola