多条目加载

//主页面
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

private XListView xListView;
private int num=0;
private boolean into=true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    xListView = (XListView) findViewById(R.id.xl);
    xListView.setPullLoadEnable(true);
    xListView.setXListViewListener(this);
    GetJieXi("http://apis.juhe.cn/cook/query?menu="
            + URLEncoder.encode("水煮鱼")+"&key="
            +URLEncoder.encode("34689251284051bcf818c8fdd7f37303")+"&pn="+num);


}

public void GetJieXi(String path){
    new AsyncTask<String,Void,String>(){

        private MyBase myBase;

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是单目线结构光的简单实现代码,使用了OpenCV库进行图像处理和显示。代码中假设已经获取了标定参数(相机内参、畸变参数和投影矩阵),并提供了一个函数`get3DPoint`,用于计算三维坐标点。 ```c++ #include <opencv2/opencv.hpp> #include <iostream> #include <vector> using namespace std; using namespace cv; // 光线参数 double alpha = 0.5; // 光线与相机光轴夹角 double beta = 0.2; // 光线与水平方向夹角 // 相机参数 Mat cameraMatrix; // 相机内参矩阵 Mat distCoeffs; // 畸变参数矩阵 Mat projMatrix; // 投影矩阵 // 获取三维坐标点 Point3f get3DPoint(Point2f imgpt, Mat projMatrix, double alpha, double beta) { // 构造光线 double cx = cameraMatrix.at<double>(0, 2); double cy = cameraMatrix.at<double>(1, 2); double fx = cameraMatrix.at<double>(0, 0); double fy = cameraMatrix.at<double>(1, 1); double x = (imgpt.x - cx) / fx; double y = (imgpt.y - cy) / fy; double z = 1; double cos_alpha = cos(alpha); double sin_alpha = sin(alpha); double cos_beta = cos(beta); double sin_beta = sin(beta); double X = x * cos_alpha * cos_beta - y * sin_beta - z * sin_alpha * cos_beta; double Y = x * cos_alpha * sin_beta + y * cos_beta - z * sin_alpha * sin_beta; double Z = x * sin_alpha + z * cos_alpha; Point3f pt(X, Y, Z); // 投影到相机坐标系 Mat ptMat = Mat::ones(4, 1, CV_64FC1); ptMat.at<double>(0) = pt.x; ptMat.at<double>(1) = pt.y; ptMat.at<double>(2) = pt.z; Mat cameraPtMat = projMatrix * ptMat; Point3f cameraPt(cameraPtMat.at<double>(0) / cameraPtMat.at<double>(3), cameraPtMat.at<double>(1) / cameraPtMat.at<double>(3), cameraPtMat.at<double>(2) / cameraPtMat.at<double>(3)); return cameraPt; } int main(int argc, char** argv) { // 加载图像,并提取光斑 Mat src = imread("image.jpg"); Mat gray, binary; cvtColor(src, gray, COLOR_BGR2GRAY); threshold(gray, binary, 150, 255, THRESH_BINARY_INV); // 拟合直线 vector<Vec4i> lines; HoughLinesP(binary, lines, 1, CV_PI/180, 30, 30, 10); if (lines.size() == 0) return -1; Vec4i line = lines[0]; // 绘制光斑和直线 circle(src, Point(line[0], line[1]), 5, Scalar(0, 0, 255), 2); circle(src, Point(line[2], line[3]), 5, Scalar(0, 0, 255), 2); line(src, Point(line[0], line[1]), Point(line[2], line[3]), Scalar(0, 255, 0), 2); // 计算三维坐标点 Point2f center((line[0]+line[2])/2, (line[1]+line[3])/2); Point3f pt = get3DPoint(center, projMatrix, alpha, beta); cout << "3D point: " << pt << endl; // 显示结果 imshow("src", src); waitKey(0); return 0; } ``` 需要注意的是,该代码中只使用了一条光线,只能计算物体表面上与该光线相交的一个点的三维坐标。如果需要获取物体表面的完整三维形状信息,需要使用多条光线和多张图像,结合三角测量等方法进行计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值