Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何设置图像透视_Cocoa_Image_Macos - Fatal编程技术网

Cocoa 如何设置图像透视

Cocoa 如何设置图像透视,cocoa,image,macos,Cocoa,Image,Macos,我在MacOSX 10.6上工作 如何设置任何图像的图像透视 我不想使用CoreImage 是否有可能通过NSAffinetTransforms实现这一点 问候,, Dhana.不能用仿射变换来表示透视变换。但是,在CoreImage中,您可以使用ImageUnit(CoreImage的名称,通常称为“过滤器”)对图像(以及许多其他很酷的东西)进行透视变换 请参阅并查看《CoreImage开发人员指南》中的。那会让你走的 基本上你所做的是 perspectiveTransform = [CIFi

我在MacOSX 10.6上工作

如何设置任何图像的图像透视

我不想使用CoreImage

是否有可能通过NSAffinetTransforms实现这一点

问候,,
Dhana.

不能用仿射变换来表示透视变换。但是,在CoreImage中,您可以使用ImageUnit(CoreImage的名称,通常称为“过滤器”)对图像(以及许多其他很酷的东西)进行透视变换

请参阅并查看《CoreImage开发人员指南》中的。那会让你走的

基本上你所做的是

perspectiveTransform = [CIFilter filterWithName:@"CIPerspectiveTransform"];
[perspectiveTransform setDefaults];
[perspectiveTransform setValue: myCIImage forKey: @"inputImage"];
[perspectiveTransform setValue: myToLeft forKey: @"inputTopLeft"];
// ... also set inputTopRight, inputBottomLeft and inputBottomRight
// if you have the coordinates of the corner points you can create
// CIVector instances with 
// + (CIVector *)vectorWithX:(CGFloat)x Y:(CGFloat)y
// ...
result = [perspectiveTransform valueForKey: @"outputImage"];

对于不使用CoreImage的解决方案,您需要自己实现转换。它不能作为仿射变换来完成。很好地解释了这个过程


如果您不能自己编写,您可以看看其他实现透视转换的第三方库。一个这样的选择是。它们将透视变换作为命令行实用程序提供,并且它们还有一个C API,您可以使用它在自己的程序中获得相同的功能。

另一种处理图像透视的方法是使用核心动画应用带有透视的三维变换。您可以将图像放置在CALayer中(作为该层的内容),或者将图像放回NSImageView。我描述了如何创建透视CATTransferM3D并将其应用于中的层,但关键是将CATTransferM3D的m34元素设置为负分数,以便创建透视效果。Mike Lee对此有自己的看法,还有一些。

是的,使用CoreImage过滤器效果很好。但出现了下面提到的缺陷。所以我想避免用这个来消除这个错误。对不起。我读到你想使用CoreImage,并不是说你特别不想使用它。我想不出一个不使用CoreImage的理由。显然,OP在使用CI时遇到了大图像(大于4000 x 2500 px)的问题。请看:这应该在问题中提及。谢谢副总裁。有没有办法解决10.6中CoreImage的补丁问题?您是否尝试过禁用硬件渲染?见: