照相机上为啥f8所接纳的光量是f16的4倍?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了照相机上为啥f8所接纳的光量是f16的4倍?相关的知识,希望对你有一定的参考价值。
光圈的F值越小,代表的通光量就大。各级光圈之间通光量相差一倍,看到光圈的F值之间有什么规律吗?他们数值间是根号2的倍数,这是因为通光量大小是以镜片面积度量的,而F值与镜片直径有关(面积比是线段比的平方),所以当进光量扩大一倍,F值就缩小根号2(大约1.141)倍。所以当光圈扩大一级,进光量就相当于原来的2倍,扩大两级,进光量就相当于原来的4倍. 参考技术A 完整的光圈值系列如下:f1,f1.4,f2,f2.8,f4,f5.6,f8,f11,f16,f22,f32,f44,f64
光圈f值愈小,在同一单位时间内的进光量便愈多,而且上一级的进光量刚是下一级的两倍,例如光圈从f8调整到f5.6,进光量便多一倍,我们也说光圈开大了一级。 参考技术B f8是f11的2倍 f11是f16的2倍 f8就是x2x2=4倍了 参考技术C 不能从数值上来看,光圈开孔大小不一样,它们中间刚好有4档,一档加一倍
如何在android中裁剪图像
【中文标题】如何在android中裁剪图像【英文标题】:how to crop images in android 【发布时间】:2013-11-02 16:29:16 【问题描述】:大家好,大家正在开发一个 android 应用程序(浊度计应用程序),它可以捕获穿过水样的光并测量从水样中发出的光量,但我发现我必须能够裁剪它捕获的图像以获得正确的读数,有人可以帮助 pliz。这是我的代码行。所以当我测量从干净水中出来的光量时,我得到的值很高,即 46(NTU),但对于干净的水,该值必须低于 5(NTU)是 S.I 单位.so 我被告知该算法正在计算整个图像,而不是仅计算感兴趣的区域,即图像的亮区。
PictureCallback callback = new PictureCallback()
@Override
public void onPictureTaken(byte[] data, Camera camera)
Log.i(TAG, "Saving a bitmap to file");
if (OpenCVLoader.initDebug())
Log.d("work", "work");
Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
Log.i("camera open", "n");
imgToProcess=new Mat();
Utils.bitmapToMat(picture, imgToProcess);
Log.d("work", "work");
Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_RGB2GRAY);
t = Core.mean(imgToProcess).toString();
【问题讨论】:
docs.opencv.org/java/org/opencv/core/… 【参考方案1】:这是在我的应用中完成这项工作的部分代码:
private void doCrop()
final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
List<ResolveInfo> list = getPackageManager().queryIntentActivities(
intent, 0);
int size = list.size();
if (size == 0)
Toast.makeText(this, res.getString(R.string.no_crop_app),
Toast.LENGTH_SHORT).show();
return;
else
intent.setData(mImageCaptureUri);
intent.putExtra("outputX", 256);
intent.putExtra("outputY", 256);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
if (size == 1)
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
i.setComponent(new ComponentName(res.activityInfo.packageName,
res.activityInfo.name));
startActivityForResult(i, ACTIVITY_CROP_FROM_CAMERA);
else
for (ResolveInfo res : list)
final CropOption co = new CropOption();
co.title = getPackageManager().getApplicationLabel(
res.activityInfo.applicationInfo);
co.icon = getPackageManager().getApplicationIcon(
res.activityInfo.applicationInfo);
co.appIntent = new Intent(intent);
co.appIntent
.setComponent(new ComponentName(
res.activityInfo.packageName,
res.activityInfo.name));
cropOptions.add(co);
CropOptionAdapter adapter = new CropOptionAdapter(
getApplicationContext(), cropOptions);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(res.getString(R.string.get_crop_app));
builder.setAdapter(adapter,
new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int item)
startActivityForResult(
cropOptions.get(item).appIntent,
ACTIVITY_CROP_FROM_CAMERA);
);
builder.setOnCancelListener(new DialogInterface.OnCancelListener()
public void onCancel(DialogInterface dialog)
if (mImageCaptureUri != null)
getContentResolver().delete(mImageCaptureUri, null,
null);
mImageCaptureUri = null;
);
AlertDialog alert = builder.create();
alert.show();
CropOption 类:
public class CropOption
public CharSequence title;
public Drawable icon;
public Intent appIntent;
以及对应的Adapter:
class CropOptionAdapter extends ArrayAdapter<CropOption>
private ArrayList<CropOption> mOptions;
private LayoutInflater mInflater;
public CropOptionAdapter(Context context, ArrayList<CropOption> options)
super(context, R.layout.crop_selector, options);
mOptions = options;
mInflater = LayoutInflater.from(context);
@Override
public View getView(int position, View convertView, ViewGroup group)
if (convertView == null)
convertView = mInflater.inflate(R.layout.crop_selector, null);
CropOption item = mOptions.get(position);
if (item != null)
((ImageView) convertView.findViewById(R.id.iv_crop_icon)).setImageDrawable(item.icon);
((TextView) convertView.findViewById(R.id.tv_crop_name)).setText(item.title);
return convertView;
return null;
【讨论】:
以上是关于照相机上为啥f8所接纳的光量是f16的4倍?的主要内容,如果未能解决你的问题,请参考以下文章