2
我正在製作一個應用程序,它使用OpenCV解析iPhone攝像頭的輸出並在屏幕上顯示結果。我知道iPhone相機橫向讀取,所以需要在屏幕上顯示結果之前進行轉換。我想我只需要縮放,旋轉-90度然後平移(tx =圖像寬度),但那不起作用。我在網上發現了一些示例代碼,下面是示例代碼,但對於左側以外的任何方向都不起作用。如何將iPhone攝像頭座標轉換爲視圖座標?
什麼是從攝像機視圖轉換爲用戶視圖的正確方法?
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
//lock the pixel buffer
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
//declare variables
int bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
int bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
//a bunch of OpenCV stuff that finds features in an image and
// returns a cameraRect
//translate to view coordinates
float scaleX = 320/(float)bufferHeight;
float scaleY = 460/(float)bufferWidth;
deviceRect.origin.x = 320 - ((cameraRect.y + cameraRect.height) * scaleX);
deviceRect.origin.y = (cameraRect.x * scaleY);
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
}
//elsewhere
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
編輯:如果不工作,我的意思是,屏幕上顯示的矩形不對應匹配的對象,它是在預覽層可見。我正在檢測臉部,並且取決於屏幕上繪製的手機deviceRect的方向與預覽圖層中的臉部有關或很少。在橫向左側,deviceRect與可見面完全匹配。
你說它不起作用 - 你能提供一些它不工作的細節嗎? – Greg 2010-12-07 20:25:09