rvecs - это представление угла поворота оси, для которого обычно требуется 4 числа, [v, theta], но v должно быть единичным вектором, и, следовательно, его длина кодируется как тета, уменьшая требуемые числа до 3. [111 ]
для кода, это должно быть что-то вроде этого.
def pnp(objectPoints,imgPoints,w,h,f):
cameraMatrix = np.array([[f,0,w/2.0],
[0,f,h/2.0],
[0,0,1]])
distCoeffs = np.zeros((5,1))
revtval,rvecs, tvecs =cv2.solvePnP(objectPoints[:,np.newaxis,:], imgPoints[:,np.newaxis,:], cameraMatrix, distCoeffs)#,False,flags=cv2.SOLVEPNP_EPNP)
return rvecs,tvecs
def rot_params_rv(rvecs):
from math import pi,atan2,asin
R = cv2.Rodrigues(rvecs)[0]
roll = 180*atan2(-R[2][1], R[2][2])/pi
pitch = 180*asin(R[2][0])/pi
yaw = 180*atan2(-R[1][0], R[0][0])/pi
rot_params= [roll,pitch,yaw]
return rot_params
http://lab.xms.pl/css-generator/ , кажется, соответствует описанию.
У меня есть версия бедного человека этого, я использовал в прошлом... это требует jQuery и поджигателя...
<script type="text/javascript">
$(document).ready(function() {
$('*[@id]').each(function() {
console.log('#' + this.id + ' {}');
});
$('*[@class]').each(function() {
$.each($(this).attr('class').split(" "), function() {
console.log('.' + this + ' {}');
});
});
});
</script>
это дает Вам что-то вроде этого:
#spinner {}
#log {}
#area {}
.cards {}
.dialog {}
.controller {}
, если Вы хотите их в "естественном" порядке страницы вместо этого...
<script type="text/javascript">
$(document).ready(function() {
$('*').each(function() {
if($(this).is('[@id]')) {
console.log('#' + this.id + ' {}');
}
if($(this).is('[@class]')) {
$.each($(this).attr('class').split(" "), function() {
console.log('.' + this + ' {}');
});
}
});
});
</script>
я просто загружаю страницу тем сценарием там, затем вырезаю и вставляю результаты из поджигателя... затем, очевидно, удаляю сценарий :)
необходимо будет удалить копирование вручную или просто бросить в некоторой простой логике проверки дубликата с картой или массивом или чем-то.. один для идентификаторов и один для классов.
Когда я увидел это в первый раз, я думал "Большой вопрос! Аккуратный ответ, danb!"
После небольшого размышления, я не так уверен, что это - хорошая идея. Это немного похоже на генерирующиеся обработчики событий для всех средств управления на странице ASP.NET или генерации процедур CRUD всех таблиц в базе данных. Я думаю, что лучше создать их по мере необходимости по двум причинам:
Не то, чтобы это не разумный вопрос с разумным ответом, но это подразумевало мне вид излишне отмеченного HTML, который создают люди, когда они не понимают позиционные селекторы: вид кода, где все имеет класс и идентификатор.
<div id="nav">
<ul id="nav_list">
<li class="nav_list_item">
<a class="navlist_item_link" href="foo">foo</a>
</li>
<li class="nav_list_item">
<a class="navlist_item_link" href="bar">bar</a>
</li>
<li class="nav_list_item">
<a class="navlist_item_link" href="baz">baz</a>
</li>
</ul>
</div>
можно удалить все кроме идентификатора на отделении и все еще смочь разработать все там его положением; и очевидно, сценарий не покажет Вам весь они возможные селекторы, не так ли?
, Другими словами, узкое внимание на CSS, поскольку что-то сделанное к классам и идентификаторам является беспокойством.
Эти ссылки записи в блоге на что-то подобное тому, в чем Вы нуждаетесь здесь .
Это содержит ссылку на сценарий Perl, названный' stylizator.pl'. Этот сценарий анализирует HTML для поиска возможных элементов CSS и производит их в файл.
Я соглашаюсь с Jon, но я не вижу проблемы* с выполнением, что хочет OP. Используя сценарий, если, Вы знали бы все свои классы и идентификаторы. При работе над CSS необходимо решать если Вы потребность для использования каждого из них. В конце, или в точке, которой Вы чувствуете себя подобно, у Вас есть хороший дескриптор на том, что Вы делаете, выполните его через оптимизатор / компрессор, таким образом, это удаляет неиспользованные идентификаторы и классы.
*Operating предположение: Вы или не записали исходный HTML, или Вы записали это и позже решили, что "черт возьми CSS будет действительно хорош здесь теперь, я желаю, чтобы я запустил бы с него". :-)
Другой способ приблизиться к этому состоит в том, чтобы стандартизировать идентификатор и имена классов, которые Вы используете в своем HTML согласно своего рода соглашение о присвоении имен .
Я не соглашаюсь с Jon. В то время как это решение может использоваться плохо в способе, которым он описывает, это не обязательно означает, что это будет. Любой мудрый разработчик или разработчик собираются посещать сгенерированные уроки и получение по запросу CSS сценария только, что действительно необходимо в файл CSS.
решение все еще решает вопрос OP.