网站开发毕设,dw6做网站,做一个企业网站价格,高端网站定制费用是多少点击上方蓝字关注我们微信公众号#xff1a;OpenCV学堂关注获取更多计算机视觉与深度学习知识问题分析与思路这个是最近有人问我的一个问题#xff0c;想把一个拍好的皮肤图像#xff0c;转换为3D粗糙度表面显示#xff0c;既然是粗糙度表面显示#xff0c;我想到的就是把… 点击上方蓝字关注我们微信公众号OpenCV学堂关注获取更多计算机视觉与深度学习知识问题分析与思路这个是最近有人问我的一个问题想把一个拍好的皮肤图像转换为3D粗糙度表面显示既然是粗糙度表面显示我想到的就是把图像转换为灰度图像对每个像素点来说有三个不同维度的信息可以表示它们分别是坐标x、y与像素灰度值c ,对每个像素点Pixel(x,y ,c)就是一个三维向量使用matplotlib的的3D表面图即可实现显示这里还另外一个问题需要解决就是像素的取值范围在0~255之后但是为了更好的显示需要首先对灰度图像归一化像素值范围到0~1之间。所以完整的步骤跟思路如下加载图像灰度转换归一化处理Surface 3D绘制代码实现代码实现主要是基于OpenCV跟matplotlib-cpp两个库关于这个配置跟简单使用这里就不再赘述了直接看之前的文章即可五分钟学会C高效图表绘制神器调用基于灰度图像实现3D表面绘制的完整代码如下Mat image imread(D:/images/skin.png);// resizeMat src;float rate 256.0 / max(image.rows, image.cols);resize(image, src, Size(image.cols*rate, image.rows*rate));// 转换为灰度图像Mat gray;cvtColor(src, gray, COLOR_BGR2GRAY);normalize(gray, gray, 0, 1, NORM_MINMAX, CV_32F);imshow(input, src);int h src.rows;int w src.cols;std::vectorstd::vectordouble x, y, z;for (int row 0; row h; row) { std::vectordouble x_row, y_row, z_row; for (int col 0; col w; col) { double pv gray.atfloat(row, col); printf(pv %.2f \n); x_row.push_back(col); y_row.push_back(row); z_row.push_back(pv); } x.push_back(x_row); y.push_back(y_row); z.push_back(z_row);}plt::plot_surface(x, y, z);plt::show();waitKey(0);测试一测试二凿井者起于三寸之坎以就万仞之深 推荐阅读 OpenCV4系统化学习路线图-视频版本OpenCV单应性矩阵发现参数估算方法详解单应性矩阵应用-基于特征的图像拼接OpenCV图像拼接改进算法之完美拼接OpenCV | 二值图像分析的技巧都在这里OpenCV二值图像分析之形态学应用技巧图像色彩空间与应用转换五分钟学会C高效图表绘制神器调用没想到图像直方图有这么多应用场景基于灰度共生矩阵(GLCM)的图像纹理分析与提取OpenCV中一个最容易搞错的形态学操作OpenCV4.x中请别再用HAAR级联检测器检测人脸有更好更准的方法