mesa3d安装

发布于:2024-10-16 ⋅ 阅读:(109) ⋅ 点赞:(0)

安装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;
}

网站公告

今日签到

点亮在社区的每一天
去签到