অবশ্যই, এটি রডরিগস কার্যক্রমে একটি বাগ ...
আপনি যদি সংশ্লিষ্ট ডকটি পড়েন তবে দেখতে পাবেন যে cv2.Rodrigues
এর 2 টি পৃথক ইন্টারফেস রয়েছে:
একটি যা সি ++ ইন্টারফেসের অনুকরণ করে, যেখানে ঘূর্ণন ভেক্টর (এবং alyচ্ছিক জ্যাকোবিয়ান) রেফারেন্স দ্বারা পাস হয় এবং ফাংশনটির মাধ্যমে সংশোধিত হয়
cv2.Rodrigues(src, dst[, jacobian]) --> None
এবং একটি (আরও পাইথোনিক) যেখানে ঘূর্ণন ভেক্টর এবং জ্যাকোবিয়ান টিউপল হিসাবে ফিরে আসে
cv2.Rodrigues(src) --> dst, jacobian
আপনি যদি প্রথম ইন্টারফেস ব্যবহার করেন তবে পিবি অদৃশ্য হয়ে যায় ...
import numpy as np
import cv2
def changes():
rmat=np.eye(4)
tvec=np.zeros(3)
#(rvec, jacobian)=cv2.Rodrigues(rmat)
cv2.Rodrigues(rmat, tvec)
print(tvec)
for i in range(2):
changes()
ফলাফল:
[0. 0. 0.]
[0. 0. 0.]
আরও তদন্তের পরে সম্পাদনা করুন:
প্রত্যাশা অনুযায়ী ফাংশনটি আরও বগী: প্রথম ইন্টারফেস, পরামিতি ব্যবহার করার সময় dst
jacobian
বগিযুক্ত: এবং কোনও সংশোধন করা হয় না, যা ডকাস্ট্রিংয়ের সাথে সম্পূর্ণ বিপরীতে রয়েছে:
>>> help(cv2.Rodrigues)
Help on built-in function Rodrigues:
Rodrigues(...)
Rodrigues(src[, dst[, jacobian]]) -> dst, jacobian
. @brief Converts a rotation matrix to a rotation vector or vice versa.
.
. @param src Input rotation vector (3x1 or 1x3) or rotation matrix (3x3).
. @param dst Output rotation matrix (3x3) or rotation vector (3x1 or 1x3), respectively.
. @param jacobian Optional output Jacobian matrix, 3x9 or 9x3, which is a matrix of partial
. derivatives of the output array components with respect to the input array components.
অন্য কথায়, এর জন্য পরিষ্কারভাবে একটি বাগ রিপোর্ট দরকার ...