在我的应用程序中,我可以选择拍照,照片将保存在文件夹中:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/my-images";
Run Code Online (Sandbox Code Playgroud)
图像保存得很好,我还可以选择使用此代码的图像:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
Run Code Online (Sandbox Code Playgroud)
这里最初用来展示 2 个画廊
1. 相机
2. 我的图片
选择其中任何一个等等,一切都很好。
但我无缘无故地删除了 my-images 文件夹并再次运行了该应用程序。再次创建相同的文件夹,图像按预期保存。
问题是:
我的图片库现在没有显示,当我点击选择图片按钮时。
除了删除 my-images 文件夹并重新启动应用程序外,我没有更改任何代码,因为它曾经运行良好。
为什么会这样?
谢谢
编辑:
我的活动代码,它允许用户拍照并存储在 SD 卡上,并浏览图片库:
public class PictureFromAppActivity extends SherlockActivity {
private File dir;
private Bitmap photo;
private String encodedString;
private InputStream is;
private ImageView imagePreview;
private String selectedImagePath;
private static final int CAMERA_REQUEST = 1888;
private static final int SELECT_PICTURE = 1;
/** Called when the …Run Code Online (Sandbox Code Playgroud) 我正在尝试在three.js中创建第三人称相机视图
我正在使用 THREE.FirstPersonControls(); 在我的相机上。然后将我的“播放器”对象的旋转和位置设置为与具有一些偏移的相机相同。
这似乎不起作用。
我更想知道的是我是否应该将我的 FirstPersonControls 添加到相机,然后在它前面渲染“玩家”。或者将控件添加到播放器然后使相机始终指向播放器的背面?
编辑:
我尝试使用 camera.add(player); 将播放器对象设置为相机的子对象。
但是移动相机并不会移动玩家。我认为添加子元素意味着它们一起移动?
编辑2:
我采取了另一种方法,将摄像机和玩家都添加到一个组中,然后将我的第一人称控件添加到该组中……现在摄像机和玩家都得到了渲染。但它完全脱离了第一人称控制的工作方式。(例如向下看向左等)
谢谢你的帮助,
詹姆士
我处理来自 IP 摄像机的 H.264 RTP 流。我使用的相机将每个 I 帧分割为多个 NAL 单元,每个单元又分割为 RTP 数据包(开始和结束标志决定每个单元的尺寸,而不是帧的尺寸)。
我如何知道帧传输何时完成并且我有足够的数据来解压缩它?由于帧由多个单元组成 - 标志不能用于确定其结束。
我工作过的大多数相机都会将每个帧分割为 RTP 数据包,其中标志确定帧的开始和结束。因此,我从等待结束标志的数据包中解压数据 - 这是一个完整的帧。
我从这台相机获得的 NAL 单元的序列是:
[NAL_UT_SPS] 序列参数集 +
[NAL_UT_PPS] 图片参数集
[NAL_UT_SEI] 补充增强信息
[NAL_UT_IDR_SLICE] I 帧图像数据的第 1 部分
[NAL_UT_IDR_SLICE] I 帧图像数据的第 2 部分
[NAL_UT_IDR_SLICE] I 帧图片数据的第 3 部分
[NAL_UT_SLICE] 第一个 P 帧
[NAL_UT_SLICE] 第二个 P 帧
[NAL_UT_SLICE] 第 3 个 P 帧
...
从这个序列中可以明显看出,我可以将 [NAL_UT_SPS] + [NAL_UT_PPS] + [NAL_UT_SEI] + 3*[NAL_UT_IDR_SLICE] 组合成一个 I 帧,我将在最近将其提供给解码器。但如何确定有多少个图片数据部分呢?当我收到第 #X 部分时,我如何知道它不是序列中的最后一个?
有任何想法吗?
当我在 Swift 中制作定制的相机应用程序时。但是当我尝试访问相机时,相机中的视图旋转了 90 度。我试图找到解决方案。我找到的一个解决方案是添加一个 fixOrientation 函数来修复视图。但不工作......这是我的完整代码:
let CIHueAdjust = "CIHueAdjust"
let CIHueAdjustFilter = CIFilter(name: "CIHueAdjust", withInputParameters: ["inputAngle" : 1.24])
let Filters = [CIHueAdjust: CIHueAdjustFilter]
let FilterNames = [String](Filters.keys).sort()
class LiveCamViewController : UIViewController,AVCaptureVideoDataOutputSampleBufferDelegate{
let mainGroup = UIStackView()
let imageView = UIImageView(frame: CGRectZero)
let filtersControl = UISegmentedControl(items: FilterNames)
override func viewDidLoad()
{
super.viewDidLoad()
view.addSubview(mainGroup)
mainGroup.axis = UILayoutConstraintAxis.Vertical
mainGroup.distribution = UIStackViewDistribution.Fill
mainGroup.addArrangedSubview(imageView)
mainGroup.addArrangedSubview(filtersControl)
imageView.contentMode = UIViewContentMode.ScaleAspectFit
filtersControl.selectedSegmentIndex = 0
let captureSession = AVCaptureSession()
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
do
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用 Onvif 设备管理器 dll( onvif.services、discovery、session 和 utils.async、common、diagnostic、fsharp dll )实现 ONVIF。
到目前为止,我能够发现 onvif 设备,获取范围(设备信息)及其配置文件,以流式传输视频并实现 ptz 控制。
现在我正在实现事件订阅,但我无法订阅任何特定事件。
这是我的事件订阅代码。我不知道下一步该做什么。
OnvifParam deviceparam = ONVIFDevices[listBox1.SelectedIndex];
deviceparam.Account = new NetworkCredential { UserName = "admin", Password = "admin" };
var sessionFactory = new NvtSessionFactory(deviceparam.Account);
int listenport = 8085;
string EventListeningPort = null;
int.TryParse(EventListeningPort, out listenport);
Uri uri = new Uri(deviceparam.Uris[0].ToString());
deviceparam.URL = uri.ToString();
Profile[] profiles = null;
var f = sessionFactory.CreateSession(uri);
profiles = f.GetProfiles().RunSynchronously();
deviceparam.Profiles = profiles;
OdmSession o = new OdmSession(f);
var subs = o.GetBaseEvents(listenport).Subscribe(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 QT 捕获图像,并将图像缓冲区写入 QBuffer 类的对象中,而不是将其保存到文件中。
到目前为止,这是我的代码:
mBuffer->open(QBuffer::ReadWrite);
mCameraImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToBuffer);
QImageEncoderSettings imageEncoderSettings;
imageEncoderSettings.setCodec("image/BMP");
mCameraImageCapture->setEncodingSettings(imageEncoderSettings);
mCamera->setCaptureMode(QCamera :: CaptureStillImage);
mCamera->start();
mCamera->searchAndLock();
mCamera->unlock();
mBuffer->close();
Run Code Online (Sandbox Code Playgroud)
是否可以将图像捕获到缓冲区中而不将其保存到文件中?
我正在使用 Vuforia 和 ZXing.NET 创建一个应用程序。现在我需要来自 vuforia 相机的图像,所以我可以用 ZXing.NET 处理它。
这应该可以通过以下代码实现:
void SomeFunction(){
Image.PIXEL_FORMAT mPixelFormat = Image.PIXEL_FORMAT.RGB565;
CameraDevice mCameraDevice = CameraDevice.Instance;
mCameraDevice.SetFrameFormat(mPixelFormat, true);
Image cameraImage = mCameraDevice.GetCameraImage(mPixelFormat);
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我无法设置帧格式 Unity 抛出错误:
Failed to set frame format
UnityEngine.Debug:LogError(Object)
Vuforia.CameraDevice:SetFrameFormat(PIXEL_FORMAT, Boolean)
Run Code Online (Sandbox Code Playgroud)
我使用 Unity 2017.3.1p1
我正在运行 ios 12 swift 4.2。
我已经实现了一个基本的相机捕获会话,并且正在点击其中的图像。一切都很好,直到我在自动/开/关模式之间切换闪光灯。单击第一张照片然后更改闪光模式后,应用程序崩溃并显示错误:
[AVCapturePhotoOutput capturePhotoWithSettings:delegate:] Settings may not be re-used'
Run Code Online (Sandbox Code Playgroud)
以下是相机实现:
var captureSession: AVCaptureSession!
var videoPreviewLayer: AVCaptureVideoPreviewLayer!
var capturePhotoOutput: AVCapturePhotoOutput!
let capturePhotoSettings = AVCapturePhotoSettings()
var previewView: UIView!
override func viewDidLoad() {
startCameraSession()
setupCaptureOutput()
}
@objc // Tap on a button to capture
func takePhotoOnTap() {
guard let capturePhotoOutput = self.capturePhotoOutput else { return }
capturePhotoSettings.isAutoStillImageStabilizationEnabled = true
capturePhotoSettings.isHighResolutionPhotoEnabled = true
capturePhotoSettings.flashMode = .auto
let _ = getSettings(camera: captureDevice!, flashMode: spotmiCameraOptions.flashMode)
capturePhotoOutput.capturePhoto(with: capturePhotoSettings, delegate: self)
}
//This is …Run Code Online (Sandbox Code Playgroud) 在 Flutter 中打开 Camera View 时,我想选择唯一的前置摄像头。我搜索但没有找到如何解决它。
有什么方法可以创建一个 Flutter 小部件,该小部件将是一个绝对位置(在 CSS 中),该小部件内的哪个将是相机预览?
我已经创建了小部件,当我访问页面时,我可以在屏幕的右下角看到它,但是当我从 Flutter 添加 CameraPreview 插件时,它会使其全屏显示。
我需要的是在我创建的页面/屏幕的右下角小部件上进行应用程序预览的选项。
Square 小部件,是我只想显示相机的地方。
import 'package:flutter/material.dart';
[![class CameraAppTest extends StatelessWidget {
static const routeName = '/videoRecordScreen';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('test'),
),
body: Container(
// width: 200,
alignment: Alignment.center,
// margin: EdgeInsets.all(24),
// padding: EdgeInsets.all(24),
decoration: BoxDecoration(),
// decoration: ,
child: Container(child: Demo()),
),
);
}
}
class Square extends StatelessWidget {
final color;
final size;
Square({this.color, this.size});
@override
Widget build(BuildContext context) {
return Container( …Run Code Online (Sandbox Code Playgroud)