首页
\
问答
\
Swift 3中的AVCaptureSession到UIImage的Erros(Erros with AVCaptureSession to UIImage in Swift 3)
Swift 3中的AVCaptureSession到UIImage的Erros(Erros with AVCaptureSession to UIImage in Swift 3)
这是我的设置:
let captureSession = AVCaptureSession() captureSession.sessionPreset = AVCaptureSessionPresetPhoto let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) do { let input = try AVCaptureDeviceInput(device: backCamera) captureSession.addInput(input) } catch { print("can't access camera") return } let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) self.view.layer.addSublayer(previewLayer!) let videoOutput = AVCaptureVideoDataOutput() videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "sample buffer delegate", attributes: .concurrent)) captureSession.addOutput(videoOutput) captureSession.startRunning() let pixelBuffer = CMSampleBufferGetImageBuffer(CMSampleBuffer) let cameraImage = CIImage(cvImageBuffer: pixelBuffer!) let comicEffect = CIFilter(name: "CIComicEffect") comicEffect!.setValue(cameraImage, forKey: kCIInputImageKey) let filteredImage = UIImage(ciImage: comicEffect!.value(forKey: kCIOutputImageKey) as! CIImage!) DispatchQueue.main.async() { let image_view = UIImageView(image: filteredImage) self.view = image_view }
我收到两个错误。 第一个错误是setSampleBufferDelegate():
Cannot convert value of type 'ViewController' to expected argument type 'AVCaptureVideoDataOutputSampleBufferDelegate!'
第二个错误是CMSampleBufferGetImageBuffer():
Cannot convert value of type '(CMSampleBuffer).Type' (aka 'CMSampleBuffer.Type') to expected argument type 'CMSampleBuffer'
剂量谁知道我可能做错了什么?
Here's my setup:
let captureSession = AVCaptureSession() captureSession.sessionPreset = AVCaptureSessionPresetPhoto let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) do { let input = try AVCaptureDeviceInput(device: backCamera) captureSession.addInput(input) } catch { print("can't access camera") return } let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) self.view.layer.addSublayer(previewLayer!) let videoOutput = AVCaptureVideoDataOutput() videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "sample buffer delegate", attributes: .concurrent)) captureSession.addOutput(videoOutput) captureSession.startRunning() let pixelBuffer = CMSampleBufferGetImageBuffer(CMSampleBuffer) let cameraImage = CIImage(cvImageBuffer: pixelBuffer!) let comicEffect = CIFilter(name: "CIComicEffect") comicEffect!.setValue(cameraImage, forKey: kCIInputImageKey) let filteredImage = UIImage(ciImage: comicEffect!.value(forKey: kCIOutputImageKey) as! CIImage!) DispatchQueue.main.async() { let image_view = UIImageView(image: filteredImage) self.view = image_view }
I'm getting two errors. The first error is with setSampleBufferDelegate():
Cannot convert value of type 'ViewController' to expected argument type 'AVCaptureVideoDataOutputSampleBufferDelegate!'
The second error is with CMSampleBufferGetImageBuffer():
Cannot convert value of type '(CMSampleBuffer).Type' (aka 'CMSampleBuffer.Type') to expected argument type 'CMSampleBuffer'
Dose anyone know what I could be doing wrong?
原文:https://stackoverflow.com/questions/43964239
更新时间:2023-09-04 14:09
最满意答案
您可以尝试热切地获取
Pers
属性:var client = session .CreateCriteria<Client>() .CreateCriteria("Pers", JoinType.LeftOuterJoin) .Add(Expression.IdEq(1)) .UniqueResult<Client>(); var pj = (PersonType1)client.Pers;
You could try to eagerly fetch the
Pers
property:var client = session .CreateCriteria<Client>() .CreateCriteria("Pers", JoinType.LeftOuterJoin) .Add(Expression.IdEq(1)) .UniqueResult<Client>(); var pj = (PersonType1)client.Pers;
相关问答
更多-
如果您的Proxy对象实现了InhibernateProxy,那么您可以使用NHibernate使用以下代码取消对对象进行代理处理: iAmaSession.GetSessionImplementation().PersistenceContext.Unproxy(iAmaProxy) 希望这可以帮助! If your Proxy object implements INhibernateProxy, you can unproxy the object with NHibernate with the ...
-
NHibernate警告将代理缩小到 - 此操作会中断==(NHibernate warning Narrowing proxy to - this operation breaks ==)[2023-10-04]
如果您使用==运算符来比较实体并确定它们是否相同,则可能会出现问题。 当您将实体添加到映射为集合的集合时,这同样会发生(但确实使用Equals )。 如果集合恰好已包含实体但通过另一个代理类型实例化,则add 可能无法遵守其合同,它可能会再次添加实体,然后该set将包含同一实体的两次出现。 这是一个可能 ,而不是遗嘱 ,因为您可以通过覆盖Equals (和GetHashcode ,因为必须在对象上返回相同的哈希码)来避免这种麻烦,以便通过它们的主键和它们进行比较。实体类型。 对于set ,它就足够了(因为它 ... -
使用ActiveRecord在nHibernate中加载惰性加载的实体(Eager loading of lazy loaded entities in nHibernate using ActiveRecord)[2022-12-11]
你为什么想要渴望的行为? ActiveRecord中的所有关系属性都有一个'Lazy ='参数来告诉ActiveRecord延迟加载相关对象。 除BelongsTo以外的所有内容。 BelongsTo检查依赖对象的ActiveRecord属性是否具有Lazy = true,然后为对象创建代理而不是执行选择或连接。 为了延迟加载,需要将类实例的所有方法和属性标记为虚拟。 这允许ActiveRecord构造一个动态代理类。 现在听起来像是一个好主意,可以获取完整的性能图表,但实际上它可能更慢。 我有三个很好的理 ... -
对于ValueInjecter解决方案,我建议使用SmartConventionInjection (您需要将代码从链接页面复制到您的解决方案中) 并指定了一个不会触及代理属性的约定 这是一个开始: public class MapPoco: SmartConventionInjection { protected override bool Match(SmartConventionInfo c) { return c.SourceProp.Name == c.Tar ...
-
您可以尝试热切地获取Pers属性: var client = session .CreateCriteria
() .CreateCriteria("Pers", JoinType.LeftOuterJoin) .Add(Expression.IdEq(1)) .UniqueResult (); var pj = (PersonType1)client.Pers; You could try to eagerly fetch the Pers p ... -
NHibernate ObjectProxy使用Lazy Loading进行投射(NHibernate ObjectProxy casting with Lazy Loading)[2022-08-11]
遗憾的是,不可能将NHibernate代理BaseClassProxy转换为DerivedClass实例,因为BaseClassProxy将继承BaseClass ,因此对DerivedClass 。 你需要做的是能够使用它们的类型,而不是将对象与它们的实际类型进行处理,例如: public T UnProxyObjectAs(object obj) { return Session.GetSessionImplementation().PersistenceContext.Unproxy(o ... -
我相信你需要在你的实体中覆盖GetHashCode和Equals 。 I believe you need to override GetHashCode and Equals in your entities.
-
我建议你按照ayende的解释序列化一个匿名对象。 I would suggest you to serialize an anonymous object as explained by ayende here.
-
默认情况下,NHibernate保证会话为同一实体返回的实例的唯一性。 这就是为什么你的eager load返回先前加载的惰性代理,如果实体的同一个会话中有一个(顺便说一下,那么应该完全初始化)。 根据应用程序的工作原理,您可能很难躲避此操作。 您可以在急切加载之前Clear会话以避免这种情况,但这将取消所有挂起的更改,并且在任何先前加载的实体与会话分离时,任何未加载的代理都将无法使用。 如果您事先有参考,您可以改为仅Evict您的实体,但在阅读您的问题时看起来并非如此。 我宁愿调整映射层以支持获取代理或基 ...
-
基于这个答案和这个答案 ,我已经通过添加下面的类来解决这个问题 public class NHibernateContractResolver : DefaultContractResolver { protected override JsonContract CreateContract(Type objectType) { if (typeof(NHibernate.Proxy.INHibernateProxy).IsAssignableFrom(objectType)) ...