Opencv Aruco标记在工业摄像头上未得到认可
OpenCV Aruco Markers are not recognized on industrial cameras
我正在努力在工业自动化技术C2摄像机上检测Aruco标记,该摄像机旨在检测三角扫描仪中的激光条纹,但它们也可以捕获图像。我的问题是,除了我之前提到的相机外,无论我使用哪种相机,都会检测到相同的标记。我的代码的最小工作示例如下:
#include <opencv2/highgui.hpp>
#include <opencv2/aruco/charuco.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[]) {
int squaresX = 10;
int squaresY = 7;
float squareLength = 28;
float markerLength = 19;
int dictionaryId = 6;
bool showRejected = true;
bool refindStrategy = true;
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
Ptr<aruco::Dictionary> dictionary =
aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
// create charuco board object
Ptr<aruco::CharucoBoard> charucoboard =
aruco::CharucoBoard::create(squaresX, squaresY, squareLength, markerLength, dictionary);
Ptr<aruco::Board> board = charucoboard.staticCast<aruco::Board>();
Mat image = imread("C:\Users\Piotrek\Desktop\calib\022.jpg"), imageCopy;
vector< int > markerIds, charucoIds;
vector< vector< Point2f > > markerCorners, rejectedMarkers;
vector< Point2f > charucoCorners;
// detect markers
aruco::detectMarkers(image, dictionary, markerCorners, markerIds, detectorParams,
rejectedMarkers);
image.copyTo(imageCopy);
if (markerIds.size() > 0) {
aruco::drawDetectedMarkers(imageCopy, markerCorners);
}
if (showRejected && rejectedMarkers.size() > 0)
aruco::drawDetectedMarkers(imageCopy, rejectedMarkers, noArray(), Scalar(100, 0, 255));
//display results
imshow("out", imageCopy);
waitKey(0);
return 0;
}
来自相机的示例图像:
问题是检测到标记,但由于未知原因,它们被拒绝:
拒绝标记
我使用OpenCV 3.1。
问题解决了。我必须翻转图像,现在可以完美地检测到标记。
是的,在x方向上翻转图像将解决它。
opencv cv::flip(image, flippedImage, 1)
相关文章:
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 使用 aruco 和 opencv4 的未解析符号
- 使用源读取器从网络摄像头源获取 H264 样本
- 为什么我不能让 3 个网络摄像头与 pthreads 并行运行?
- OpenCV ArUco标记,如何获得它们的中心?
- 从 OpenCV 3 切换到 OpenCV 4 会导致网络摄像头以最大 5 fps 的速度录制,而不是通常的 30 f
- 如何使用realsense摄像头调试ROS错误消息
- ArUco姿态估计中的不稳定值
- Qt小部件中的摄像头访问
- 媒体基金会可以允许多个客户端同时访问单个网络摄像头设备吗?
- 从C++调用网络摄像头并在 Python 中显示图像
- 无法使用 OpenCV 3.1.0 检测 ArUco 标记
- 从 WinPE 下的网络摄像头捕获?
- UE4-使用摄像头时,观众不会旋转(俯仰)
- opencv aruco.h not found windows 10 visual studio
- OpenCV没有显示来自Macbook网络摄像头的视频
- 使用OpenCV和C++在按键上截取网络摄像头源的屏幕截图
- 什么相当于英特尔实感 3D 摄像头 (SR300) 的 pmdGet3DCoordinates?
- Opencv Aruco标记在工业摄像头上未得到认可