小编LKB*_*LKB的帖子

Android:单击按钮时切换相机

我有一个名为switchCamera的方法,我试图在点击按钮时从前向后切换相机,在一个平滑的过渡中.当我打电话给这个方法时,我的应用程序冻结了 - 我知道我做的不对.有人可以帮我从这里出去吗?

任何帮助深表感谢.

public void switchCamera(){
    int camNum = 0;
    camNum = Camera.getNumberOfCameras();
    int camBackId = Camera.CameraInfo.CAMERA_FACING_BACK;
    int camFrontId = Camera.CameraInfo.CAMERA_FACING_FRONT;

    Camera.CameraInfo currentCamInfo = new Camera.CameraInfo();

    //if camera is running
    if (camera != null){
        //and there is more than one camera
        if (camNum > 1){
            //stop current camera
            camera.stopPreview();
            camera.setPreviewCallback(null);
            //camera.takePicture(null, null, PictureCallback);
            camera.release();
            camera = null;
            //stop surfaceHolder?

            if (currentCamInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){
                //switch camera to back camera
                camera=Camera.open(camBackId);
            }
            else{
                //switch camera to front camera
                camera=Camera.open(camFrontId);
            }
            //switch …
Run Code Online (Sandbox Code Playgroud)

java camera android button

38
推荐指数
2
解决办法
4万
查看次数

C#:要成为XML可序列化,从IEnumerable继承的类型必须具有Add(System.Object)的实现

所以我有以下代码:

private static string FindAppointmentsAsXmlString(CalendarView calendar, ExchangeService serv)
{
    FindItemsResults<Appointment> appointments = serv.FindAppointments(WellKnownFolderName.Calendar, calendar);

    var serializer = new XmlSerializer(appointments.GetType());
    var writer = new StringWriter();

    try
    {
        serializer.Serialize(writer, appointments);
        Console.WriteLine(writer.GetStringBuilder().ToString());
        Console.ReadLine();
    }
    catch (Exception ex) 
    {
        Console.WriteLine(ex);
        Console.ReadLine();
    }

    return writer.GetStringBuilder().ToString();
}
Run Code Online (Sandbox Code Playgroud)

初始化序列化程序时,我得到异常:

要成为XML可序列化,从IEnumerable继承的类型必须在其继承层次结构的所有级别都具有Add(System.Object)的实现.

Microsoft.Exchange.WebServices.Data.FindItemsResults未实现Add(System.Object).

我一直在搜索,我得出的结论是我必须添加一个公共的Add(Object obj)方法.现在我不确定这个方法应该包含什么或什么时候被调用,有人能指出我正确的方向吗?Add方法需要手动添加每个约会吗?

一些链接,我发现有帮助: 这里 这里

非常感激.

c# ienumerable serialization add exchangewebservices

8
推荐指数
1
解决办法
1万
查看次数

眼镜检测

我要做的是测量眼镜框的厚度.我有想法测量框架轮廓的厚度(可能是更好的方法?).到目前为止,我已经概述了眼镜的框架,但是有些线条不符合.我想过使用HoughLinesP,但我不确定这是否是我需要的.

到目前为止,我已经执行了以下步骤:

  • 将图像转换为灰度
  • 在眼睛/眼镜区域周围创建投资回报率
  • 模糊图像
  • 扩大图像(这样做是为了去除任何薄框眼镜)
  • 进行Canny边缘检测
  • 找到轮廓

这些是结果:

到目前为止这是我的代码:

//convert to grayscale
cv::Mat grayscaleImg;
cv::cvtColor( img, grayscaleImg, CV_BGR2GRAY );

//create ROI
cv::Mat eyeAreaROI(grayscaleImg, centreEyesRect);
cv::imshow("roi", eyeAreaROI);

//blur
cv::Mat blurredROI;
cv::blur(eyeAreaROI, blurredROI, Size(3,3));
cv::imshow("blurred", blurredROI);

//dilate thin lines
cv::Mat dilated_dst;
int dilate_elem = 0;
int dilate_size = 1;
int dilate_type = MORPH_RECT;

cv::Mat element = getStructuringElement(dilate_type, 
    cv::Size(2*dilate_size + 1, 2*dilate_size+1), 
    cv::Point(dilate_size, dilate_size));

cv::dilate(blurredROI, dilated_dst, element);
cv::imshow("dilate", dilated_dst);

//edge detection
int lowThreshold = 100;
int ratio = 3;
int kernel_size = …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing hough-transform canny-operator

8
推荐指数
1
解决办法
2689
查看次数

翻转存储为byte []数组的图像

我有一个存储为byte []数组的图像,我想在将其发送到其他地方(作为byte []数组)之前翻转图像.

我已经搜索过,在没有操作byte []数组中的每个位的情况下找不到简单的解决方案.

如何将字节数组[]转换为某种类型的图像类型,使用现有的翻转方法翻转,然后将其转换回byte []数组?

有什么建议?

干杯!

java android image bytearray flip

7
推荐指数
1
解决办法
7032
查看次数

从选择中检索中心点XY坐标

我的目标是允许我的Android应用程序的用户选择脸部上的点并从该触摸中检索X和Y坐标.请看下面的图片.

面对面协调

我希望用户能够更改选择方块的大小.

到目前为止,我有以下代码,但老实说我不知道​​从那里去哪里.如何绘制用户可以操作和移动的矩形(然后从中返回X和Y中心点坐标)?我确定这是一个Android功能.

private void selectImg(){
    //retrieve X and Y values from touch
    surfaceView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent pos) {
            //retrieve position when user finishes touch
            if (pos.getAction() == MotionEvent.ACTION_UP){
                    Log.d("X",String.valueOf(pos.getX()));
                    Log.d("Y",String.valueOf(pos.getY()));
            }
            return true;
        }
    });     
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

可能有用: 自定义Android Image Crop https://github.com/dtitov/pickncrop/blob/master/src/com/github/pickncrop/MainActivity.java

java android coordinates

5
推荐指数
1
解决办法
1420
查看次数

在Android应用中替换并增加文件名中的数字

请参阅以下(两个)解决方案的答案.


我似乎无法使我的逻辑正确,并且由于某种原因,这确实让我,但它似乎(并且可能是)如此简单.我想要做的是捕获图像,如果存在,则增加图像.即photo1.jpg存在,因此将新文件保存为photo2.jpg等.

在我运行我的代码并拍摄照片的那一刻,"photo.jpg"被保存,然后在下一次拍摄时,"photo1.jpg"被保存,然后是"photo11.jpg",然后是"photo111.jpg "等

这是我的代码:

        String photoName = "photo.jpg";
        String i = "0";
        int num = 0;

        File photo = new File(Environment.getExternalStorageDirectory(), photoName);

        while(photo.exists()) {             
            //photo.delete();
            num = Integer.parseInt(i);
            num++;
            String concatenatedNum = Integer.toString(num);
            StringBuffer insertNum = new StringBuffer(photoName);
            photoName = insertNum.replace(5, 5, concatenatedNum).toString();
                                //insert

            photo = new File(Environment.getExternalStorageDirectory(), photoName);
        }

        FileOutputStream fostream = null;

        try {
            fostream = new FileOutputStream(photo.getPath());

            //MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle, yourDescription);

            //write jpeg to local drive
            fostream.write(jpeg[0]);
            fostream.close();
        }
        catch (IOException e) { e.printStackTrace(); }
        finally …
Run Code Online (Sandbox Code Playgroud)

java android replace file increment

4
推荐指数
1
解决办法
5380
查看次数

从圆/点获得ROI

我在图像中有两个点,左眼中心(X,Y)和右眼中心(X,Y).我用两只眼睛画圈cv::circle,这很好.但是我现在要做的就是获得我绘制的圆圈的投资回报率,即提取眼睛并将它们保存在新的垫子中.

这是我目前的结果:

......但正如我上面所说,只需要将眼睛周围的圆圈提取到新的垫子中,每只眼睛一个.

这是我的代码:

cv::Mat plotImage;

plotImage = cv::imread("C:/temp/face.jpg", cv::IMREAD_COLOR);

cv::Point leftEye(person.GetLeftEyePoint().X, person.GetLeftEyePoint().Y);
cv::Point rightEye(person.GetRightEyePoint().X, person.GetRightEyePoint().Y);

cv::circle(plotImage, leftEye, 15, cv::Scalar(255, 255));
cv::circle(plotImage, rightEye, 15, cv::Scalar(255, 255));

cv::imwrite("C:\\temp\\plotImg.jpg", plotImage);
Run Code Online (Sandbox Code Playgroud)

我找到了以下链接,但我似乎无法理解它们/将它们应用到我正在尝试做的事情:http: //answers.opencv.org/question/18784/crop-image-using -hough圈/

选择区域OpenCV

使用C语言中的OpenCV定义图像ROI

任何帮助/指导表示赞赏!谢谢!

c++ opencv roi mat

4
推荐指数
1
解决办法
6339
查看次数

将字符串添加到列表 - 更快捷的方法?

有没有比下面的示例更快或更有效的方法将字符串添加到列表?:

List<String> apptList = new List<String>();

foreach (Appointment appointment in appointments){

    String subject = appointment.Subject;
    //...(continues for another 10 lines)

    //...And then manually adding each String to the List:   
    apptList.Add(subject);
    //...(continues for another 10 lines)

    //And then send off List apptList to another method
}
Run Code Online (Sandbox Code Playgroud)

c# string list add

3
推荐指数
1
解决办法
131
查看次数