目录
1.我使用的是xampp,在浏览器地址栏输入http://localhost//phpmyadmin
注意:端口号默认是80端口,也就是http://localhost:80//phpmyadmin,如果你改了你的端口号注意更改
2.点击新建数据库(库名是itcast52)两个表明,book52(增删改查用)user52(登录注册用)
以下是数据库的文件,建立一个记事本,把代码粘贴上去,点击保存,把后缀从text改成sql,然后在数据库建立一个itcast52数据库,在数据库里面导入sql文件即可(数据库就完毕了)
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- 主机: 127.0.0.1
-- 生成日期: 2022 年 05 月 16 日 05:24
-- 服务器版本: 5.5.27
-- PHP 版本: 5.4.7
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- 数据库: `itcast52`
--
-- --------------------------------------------------------
--
-- 表的结构 `book52`
--
CREATE TABLE IF NOT EXISTS `book52` (
`id` varchar(20) NOT NULL,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_estonian_ci NOT NULL,
`price` varchar(20) NOT NULL,
`data` varchar(20) NOT NULL,
`type` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- 转存表中的数据 `book52`
--
INSERT INTO `book52` (`id`, `name`, `price`, `data`, `type`) VALUES
('003', 'csdn', '55', '2025-11-6', '数据库设计'),
('012', '雕塑', '17777', '20255-5-6', '雕塑'),
('066', '固化剂', '255', '2001-09-06', '添加剂'),
('3119050152', '张修博', '999999', '2000-01-12', '人');
-- --------------------------------------------------------
--
-- 表的结构 `user52`
--
CREATE TABLE IF NOT EXISTS `user52` (
`account` char(100) NOT NULL,
`username` char(100) NOT NULL,
`sex` char(100) NOT NULL,
`age` char(100) NOT NULL,
`address` char(100) NOT NULL,
`mail` char(100) NOT NULL,
`password` char(100) NOT NULL,
`number` char(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- 转存表中的数据 `user52`
--
INSERT INTO `user52` (`account`, `username`, `sex`, `age`, `address`, `mail`, `password`, `number`) VALUES
('3119050152', '张修博', '男', '21', '河南商丘', '[email protected]', '3119050152', '3119050152');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>conn文件</title>
</head>
<body>
<?php
$mysql_server_name = 'localhost'; //改成自己的mysql数据库服务器
$mysql_username = 'root'; //改成自己的mysql数据库用户名
$mysql_password = ''; //改成自己的mysql数据库密码
$mysql_database = 'itcast52'; //改成自己的mysql数据库名
$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //连接数据库
//连接数据库错误提示
mysqli_query($conn, 'set names utf8');
mysqli_query($conn, 'set character set utf8');
if (mysqli_connect_errno($conn))
{
die("连接 MySQL 失败: " . mysqli_connect_error());
}
?>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<style type="text/css">
#aaa{width: 300px;
height: 30px;}
</style>
<body>
<center>
<h2>登录界面</h2>
<form method="POST" action="log_ok.php">
账号 :<input id="aaa" type="text" name="uname" placeholder="用户名" />
<br /><br/>
密码 :<input id="aaa"type="password" name="pwd" placeholder="密码" />
<br />
<input type="submit" >
<input type="reset"> <a href="register.php">注册账号</a>
</form>
</center>
</body>
</html>
<?php
//------文件编码格式,为了显示中文--------
header("content-type:text/html; charest=UTF-8");
//-------收受web的传值-------
$uname=$_POST["uname"];
$pwd=$_POST["pwd"];
//-----链接mysql数据库---
include("conn.php");
//----免除一些警告-------
error_reporting(0);
//-------启动session------
session_start();
//判断$uname与$pwd是否为空值-->true 返回上一步-->false 执行数据库查询,并且给session赋值
if(!($uname && $pwd)){
echo"<script>alert('输入的账号或密码为空!请重新输入账号和密码');history.go(-1);</script>";
}else{
$sqlstr ="SELECT * FROM user52 WHERE (account='$uname') AND (password='$pwd')";
$result = $conn->query($sqlstr);
}
if($result->num_rows > 0){
$_SESSION["user"]=$uname;
echo"<script>alert('登录成功,即将转到主页面');location='index1.php'</script>";
}else{
echo"<script>alert('密码或者账号错误,登录失败,请重新输入账号和密码');history.go(-1);</script>";
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<style type="text/css">
.aaa{width: 300px;
height: 30px;}
</style>
<style type="text/javascript">
</style>
<body>
<?php
$a=mt_rand(333333,999999999);
?>
<center>
<h2>注册界面</h2>
<form method="post" name="from1" action="register_ok.php"><!-- 在数据库中id是自动增长列 -->
账号: <input name="id" class="aaa" type="text" value="<?php echo"$a";?>"><br/><br/>
姓名: <input class="aaa" type="text" name="username"><br/><br/>
性别: <input class="aaa" type="text" name="sex"><br/><br/>
年龄: <input class="aaa" type="text" name="age"><br/><br/>
地址: <input class="aaa" type="text" name="address"><br/><br/>
邮箱: <input class="aaa" type="text" name="mail"><br/><br/>
密码: <input class="aaa" type="text" name="password"><br/><br/>
确认 密码: <input class="aaa" type="text" name="repsw"><br/><br/>
手机号: <input class="aaa"type="text" name="number"><br/><br/>
<input type="reset"name="reset" value="重置">
<input type="submit"name="submit" value="注册" onClick="myfunction">
<a href="log.php"><< 返回上一页</a>
<a href="register.php">点击注册</a>
</form>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
</body>
<body>
<?php
include_once("conn.php");
header("content-type:text/html; charest=UTF-8");//文件编码格式
session_start();
$id=$_POST['id'];
$username=$_POST['username'];
$sex=$_POST['sex'];
$age=$_POST['age'];
$address=$_POST['address'];
$mail=$_POST['mail'];
$password=$_POST['password'];
$repsw=$_POST['repsw'];
$number=$_POST['number'];
if(!($id and $username and $sex and $age and $address and $mail and $password and $number and $repsw )){
echo"<script>alert('输入值不许为空');history.go(-1);</script>";
}else{
if(!($repsw==$password)){
echo"<script>alert('两次密码不一致');history.go(-1);</script>";
}else{
$sql = "SELECT * FROM user52 WHERE (account='$id')";//在数据库中找相应信息!
$res = $conn->query($sql);
//判断结果集的记录数是否大于0
if ($res->num_rows > 0){
echo"<script>alert('已经有相同账号,请您换个账号进行注册');history.go(-1);</script>";
}else{
$_SESSION['user']=$id;
$sqlstr1="insert into user52 values('".$id."','".$username."','".$sex."','".$age."','".$address."','".$mail."','".$password."','".$number."')";
//执行sql insert语句 把用post引用的变量接入到register中
$result = mysqli_query($conn,$sqlstr1);//承接结果集
if($result){
echo"<script>alert('注册成功');location='index1.php'</script>";
}else{
echo"<script>alert('注册失败');history.go(-1);</script>";
}
}
}
}
?>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>图书管理系统</title>
</head>
<body>
<?php
error_reporting(0);
session_start();
include("conn.php");
?>
<center>
<table width="799" height="247" border="1" cellpadding="0" cellspacing="0">
<tr>
<td height="220" background="1.jpg"> </td>
</tr>
<tr>
<td>
<table width="100%" height="27" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#9791C2">
<td width="149" align="center" valign="middle"><b>
<?php
echo date("Y-m-d")."";
?>
</b></td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s">浏览目录</a></td>
<td width="130" align="center" valign="middle"><a href="index_ok.php" class="s">添加图书</a></td>
<td width="130" align="center" valign="middle"><a href="index-select.php" class="s">简单查询</a></td>
<td width="130" align="center" valign="middle"><a href="back.php" class="s">退出系统</a></td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s"><?php if(!($_SESSION['user']))
echo'session为空';
else{
echo"欢迎 :";
echo $_SESSION['user'];
} ?></a></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="799" border="0" cellpadding="0" cellspacing="0">
<tr>
<tr align="center" valign="middle">
<?php
include_once("conn.php");
?>
<table width="52.5%" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#F7E0A3">
<td width="3%" height="25" class="top" align="center">id</td>
<td width="10%" class="top" align="center">图书名称</td>
<td width="10%" class="top" align="center">价格</td>
<td width="10%" class="top" align="center">出版日期</td>
<td width="5%" class="top" align="center">类型</td>
</tr>
<?php
$result = mysqli_query($conn,"select * from book52 ");
/*$sums = mysqli_num_rows($result);
echo $nums;*/
while($myrows = mysqli_fetch_array($result)){
?>
<tr>
<td align="center"><span class="STYLE2"><?php echo $myrows['id'];?></span></td>
<td align="center"><span class="STYLE2"><?php echo $myrows['name'];?></span></td>
<td align="center"><span class="STYLE2"><?php echo $myrows['price'];?></span></td>
<td align="center"><span class="STYLE2"><?php echo $myrows['data'];?></span></td>
<td align="center"><span class="STYLE2"><?php echo $myrows['type'];?></span></td>
</tr>
<?php
}
?>
</table>
</tr>
</tr>
</table>
</center>
<?php
$sum = mysqli_num_rows($result);
echo $sum;
?>
</body>
</html>
这个代码包含了实现的代码!
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>添加数据</title>
</head>
<body>
<?php
error_reporting(0);
session_start();
include("conn.php");
?>
<center>
<table width="799" height="247" border="1" cellpadding="0" cellspacing="0">
<tr>
<td height="220" background="1.jpg"> </td>
</tr>
<tr>
<td>
<table width="100%" height="27" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#9791C2">
<td width="149" align="center" valign="middle">
<b>
<?php
echo date("Y-m-d")."";
?>
</b>
</td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s">浏览目录</a></td>
<td width="130" align="center" valign="middle"><a href="index_ok.php" class="s">添加图书</a></td>
<td width="130" align="center" valign="middle"><a href="index-select.php" class="s">简单查询</a></td>
<td width="130" align="center" valign="middle"><a href="back.php" class="s">退出系统</a></td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s"><?php if(!($_SESSION['user']))
echo'session为空';
else{
echo"欢迎 :";
echo $_SESSION['user'];
} ?></a></td>
</tr>
</table>
</td>
</tr>
</table>
<form method="post" name="form1" action="index_ok.php">
编号 : <input type="text" name="id" ></input><br/><br/>
姓名 : <input type="text" name="name"></input><br/><br/>
价格 : <input type="text" name="price"></input><br/><br/>
日期 : <input type="text" name="data"></input><br/><br/>
类型 : <input type="text" name="type"></input><br/><br/>
<input type="reset" name="5" value="重置"></input>
<input type="submit" name="6" value="提交"></input>
</form>
<?php
error_reporting(0);
header("content-type:text/html; charest=UTF-8");//文件编码格式
include_once("conn.php");//连接数据库文件
$a=$_POST["id"];
$b=$_POST["name"];
$c=$_POST["price"];
$d=$_POST["data"];
$e=$_POST["type"];
//把input中的namejie
if(!($a and $b and $c and $d and $e)){
echo"<script>alter('输入值不许为空');history.go(-1);</script>";//判断变量名是否为空值
}else{
$sqlstr1="insert into book52 values('".$a."','".$b."','".$c."','".$d."','".$e."')";
//执行sql insert语句 把用post引用的变量接入到bookable中
$result = mysqli_query($conn,$sqlstr1);//承接结果集
if($result){
echo"<script>alter('添加成功');location='index1.php'</script>";
}else{
echo"<script>alter('添加失败');history.go(-1);</script>";
}
}
?>
</center>
</body>
</html>
这个页面包含了两个功能 修改 和 删除 但是 功能实现 在另外两个页面里
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>简单查询</title>
</head>
<body>
<?php
error_reporting(0);
session_start();
include("conn.php");
?>
<center>
<table width="799" height="247" border="1" cellpadding="0" cellspacing="0">
<tr>
<td height="220" background="1.jpg"> </td>
</tr>
<tr>
<td>
<table width="100%" height="27" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#9791C2">
<td width="149" align="center" valign="middle"><b>
<?php
echo date("Y-m-d")."";
?>
</b></td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s">浏览目录</a></td>
<td width="130" align="center" valign="middle"><a href="index_ok.php" class="s">添加图书</a></td>
<td width="130" align="center" valign="middle"><a href="index-select.php" class="s">简单查询</a></td>
<td width="130" align="center" valign="middle"><a href="back.php" class="s">退出系统</a></td>
<td width="130" align="center" valign="middle"><a href="index1.php" class="s"><?php if(!($_SESSION['user']))
echo'session为空';
else{
echo"欢迎 :";
echo $_SESSION['user'];
} ?></a></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="799" border="0" cellpadding="0" cellspacing="0">
<tr>
<tr align="center" valign="middle">
<?php
include_once("conn.php");
?>
<table width="52.5%" border="1" cellpadding="0" cellspacing="0">
<tr bgcolor="#F7E0A3">
<td width="3%" height="25" class="top" align="center">id</td>
<td width="10%" class="top" align="center">图书名称</td>
<td width="10%" class="top" align="center">价格</td>
<td width="10%" class="top" align="center">出版日期</td>
<td width="5%" class="top" align="center">类型</td>
<td width="5%" class="top" align="center">芜湖</td>
</tr>
<?php
header("content-type:text/html; charest=UTF-8");//文件编码格式
include_once("conn.php");//连接数据库文件
$sqlstr="select * from book52 order by id ";//通过把sql语句放到变量值中 来执行php
$result = mysqli_query($conn,$sqlstr);//承接结果集 一般来说结果集之后会被用在循环中例如index_ok.php ,或者遍历输出数据库中的值例如index1.php
while($rows= mysqli_fetch_row($result)){
?>
<tr>
<td align="center"><span class="m_td"><?php echo $rows[0];?></span></td>
<td align="center"><span class="m_td"><?php echo $rows[1];?></span></td>
<td align="center"><span class="m_td"><?php echo $rows[2];?></span></td>
<td align="center"><span class="m_td"><?php echo $rows[3];?></span></td>
<td align="center"><span class="m_td"><?php echo $rows[4];?></span></td>
<td align="center" class="m_td">
<a href =update.php?action=update&id=<?php echo $rows[0]?>>修改</a>/
<a href =delete.php?action=delete&id=<?php echo $rows[0]?>>删除</td>
</tr>
<?php
}
?>
</table>
</tr>
</tr>
</table>
</center>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>更改文档</title>
</head>
<body>
<?php
error_reporting(0);
include_once("conn.php");//连接数据库文件
if($_GET['action']=="update"){
$sqlstr="select * from book52 where id =".$_GET['id']; //".$_GET['id'];没看懂
$result = mysqli_query($conn,$sqlstr);//承接结果集 一般来说结果集之后会被用在循环中例如index_ok.php ,或者遍历输出数据库中的值例如index1.php
$rows = mysqli_fetch_row($result); //枚举数组
?>
<form method="post" name="intForm" action="update_ok.php">
姓名 : <input type="text" name="name" value="<?php echo $rows[1]; ?>"></input><br/><br/>
价格 : <input type="text" name="price" value="<?php echo $rows[2]; ?>"></input><br/><br/>
日期 : <input type="text" name="data" value="<?php echo $rows[3]; ?>"></input><br/><br/>
类型 : <input type="text" name="type" value="<?php echo $rows[4]; ?>"></input><br/><br/>
<input type="hidden" name="action"value="update"></input>
<input type="hidden" name="id" value="<?php echo $rows[0] ?>"></input>
<input type="reset" name="Reset" value="重置">
<input type="submit" name="Submit" value="提交">
</form>
<?php
}
?>
</body>
</html>
这个项目的实现是 地址栏传参数,不会的同学可以去看下资料就差不多会了
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>更新数据</title>
</head>
<body>
<?php
header("Content-type:text/html; charest=UTF-8");//编码方式
include_once("conn.php");//连接数据库
$a=$_POST["id"];
$b=$_POST["name"];
$c=$_POST["price"];
$d=$_POST["data"];
$e=$_POST["type"];
if($_POST['action'] == "update"){
if(!( $b and $c and $d and $e)){
echo "输入不允许为空"; //返回上一页 或者使用alert
}else{
$sqlstr="update book52 set name='".$b."',price='".$c."',data='".$d."',type='".$e."' where id=".$a; //定义更新语句
//如果查询所有后面属性可以省略,一一对应
$result = mysqli_query($conn,$sqlstr);
if($result){
echo"修改成功,点击<a href='index1.php'>这里</a>查看";
}else{
echo"修改失败.<br>$sqlstr";
}
}
}
?>
</body>
</html>
</body>
</html>
包含了删除的功能
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<?php
header("Content-type:text/html; charest=UTF-8");//编码方式
// 处理删除操作的页面
include_once("conn.php");
if($_GET['action']=="delete"){
$sqlstr1="delete from book52 where id =".$_GET['id'];
$result=mysqli_query($conn,$sqlstr1);
if($result){
echo"删除成功";
}else{
echo"删除失败";
}
}
?>
</body>
</html>
这个代码就是清除session的值,并且返回到登陆页面
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<?php
session_start();
session_unset();
session_destroy();
echo"<script>alert('您已经退出系统,请重新登录');location='log.php'</script>";
?>
</body>
</html>
总结:由于仅仅是实现了该有的功能,所以页面不是太美观,有时间的同学可以仔细改一下,如果同学们有什么问题或者我写错了什么,可以在评论区发言,我看到会回复的,共同学习!勉励!!
文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr
文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc
文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8
文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束
文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求
文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname
文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立
文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码
文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词
文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限
文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定
文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland