自学内容网 自学内容网

mesa3d安装

安装ubuntu 22

安装opencv
使用cmake-gui 来安装opencv

sudo apt install meson
sudo apt install glslang-tools
sudo apt install llvm
sudo apt install cmake
sudo apt install libwayland-bin
sudo aptinstall pkgconf
sudo apt install pkgconf
sudo apt-get install libdrm-dev libxxf86vm-dev libxt-dev xutils-dev flex bison xcb libx11-xcb-dev libxcb-glx0 libxcb-glx0-dev xorg-dev libxcb-dri2-0-dev libxcb-xfixes0 libxcb-xfixes0-dev libxcb-dri3-0 libxcb-present0 libpciaccess0 libpng-dev libxcb-keysyms1-dev libxcb-dri3-dev libx11-dev libxcb-present-dev libxshmfence-dev llvm
sudo apt-get install libxcb-shm0-dev
sudo apt-get install libwayland-dev
sudo apt-get install libwayland-*
sudo apt-get install wayland-protocols

升级meson

pip3 install --upgrade meson
sudo apt-get install libwayland-egl-backend-dev

OpenGL Mesa库在ubuntu22.04上的编译
https://blog.51cto.com/u_15899439/9852884

下载 vulkan sdk

https://vulkan.lunarg.com/sdk/home#linux
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.283-jammy.list https://packages.lunarg.com/vulkan/1.3.283/lunarg-vulkan-1.3.283-jammy.list
sudo apt update
sudo apt install vulkan-sdk

等距柱状投影 erp

 *Copyright (c) 2018 Young Fan.All Right Reserved.
 *Author: Young Fan
 *Date: 2018.10.6
 *OpenCV version: 3.4.3
 *IDE: Visual Studio 2017
 *Description:
 */
 
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
 
using namespace cv;
using namespace std;
 
int main()
{
Mat srcImage = imread("lena.jpg");
 
int height = srcImage.rows; //原图像的高(即原图像矩阵行数)
int width = srcImage.cols; //原图像的宽(即原图像矩阵列数)
int centerX = width / 2; //图像中心横坐标
int centerY = height / 2; //图像中心纵坐标
double alpha = CV_PI / 4; //相机视角角度
double f = width / (2 * tan(alpha / 2)); //焦距(圆的半径)
 
//求左右黑色缝隙宽度
int len = cvRound(width / 2 - f * alpha / 2); //cvRound:取整
 
//定义合适的目标图
Mat dstImage = Mat::zeros(srcImage.rows, width - 2 * len, CV_8UC3); //注意尺寸
 
//循环遍历
for (int i = 0; i < srcImage.rows; i++)
{
for (int j = 0; j < srcImage.cols; j++)
{
//注意图像坐标与像素矩阵坐标的区别
float theta = atan((j - centerX) / f);
int pointX = cvRound(width / 2 + f * theta); //注意这里用width / 2,用f * alpha / 2,两边缝隙会不均匀(只有右边有黑缝隙)
int pointY = cvRound(f * (i - centerY) / sqrt((j - centerX) * (j - centerX) + f * f) + centerY);
 
//像素赋值,此时要将列数(图像横坐标)往左移,与初始的黑色图像边缘对其,即pointX - len
dstImage.at<Vec3b>(pointY, pointX - len)[0] = srcImage.at<Vec3b>(i, j)[0];
dstImage.at<Vec3b>(pointY, pointX - len)[1] = srcImage.at<Vec3b>(i, j)[1];
dstImage.at<Vec3b>(pointY, pointX - len)[2] = srcImage.at<Vec3b>(i, j)[2];
}
}
 
imshow("原图", srcImage);
imshow("柱面投影效果图", dstImage);
 
waitKey();
 
return 0;
}

原文地址:https://blog.csdn.net/qianbo042311/article/details/142374415

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!