返回顶部
首页 > 资讯 > 精选 >MATLAB全景图切割及盒图显示怎么实现
  • 176
分享到

MATLAB全景图切割及盒图显示怎么实现

2023-06-15 02:06:35 176人浏览 薄情痞子
摘要

小编给大家分享一下MATLAB全景图切割及盒图显示怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!part1 全景图切割原图:切割效果:以下是切割部分步骤:

小编给大家分享一下MATLAB全景图切割及盒图显示怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

part1 全景图切割

原图:

MATLAB全景图切割及盒图显示怎么实现

切割效果:

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

以下是切割部分步骤:
举这张图为例,图片格式hdr,jpg啥的都行:

MATLAB全景图切割及盒图显示怎么实现

1.1 边缘剔除

有些全景图会自带白灰色边缘,若是直接进行切割便会出现如下效果:

MATLAB全景图切割及盒图显示怎么实现

这时候我们首先要对原图进行白边剔除,代码如下:

oriPic=imread('test.hdr');[rows,cols,~]=size(oriPic);for i=cols:-1:1    tempListR=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListG=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListB=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(:,i,:)=[];    else        break;    endendoriPic=oriPic(:,end:-1:1,:);for i=size(oriPic,2):-1:1    tempListR=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListG=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListB=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(:,i,:)=[];    else        break;    endendoriPic=oriPic(:,end:-1:1,:);for i=rows:-1:1    tempListR=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListG=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListB=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(i,:,:)=[];    else        break;    endendoriPic=oriPic(end:-1:1,:,:);for i=size(oriPic,1):-1:1    tempListR=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListG=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListB=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(i,:,:)=[];    else        break;    endendoriPic=oriPic(end:-1:1,:,:);

1.2 图像裁剪

我们要让完成的就是如下的变换和裁剪:

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

这部分其实已经有较为成熟的原理和代码:
代码参考:https://stackoverflow.com/questions/29678510/convert-21-equirectangular-panorama-to-cube-map

原理参考:
Http://paulbourke.net/panorama/cubemaps/#1

http://paulbourke.net/panorama/cubemaps/

原理参考文章中更加清晰的变化图:

MATLAB全景图切割及盒图显示怎么实现

另:
在参考代码的基础上,对映射像素进行了插值处理,可以使图像更加平滑,原理如下:

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

主要函数代码:

function resultPic=createCubeMapFace(oriPic,id,height,width)    [M,N,~]=size(oriPic);    resultPic=zeros([height,width,3]);    an=sin(pi/4);    ak=cos(pi/4);        faceTransfORM=[0,0;               pi/2,0;               pi,0;               -pi/2,0;               0,-pi/2;               0,pi];    ftu=faceTransform(id,1);    ftv=faceTransform(id,2);    for y=0:height-1        for x=0:width-1            nx=y/height-0.5;            ny=x/width-0.5;            nx=nx*2*an;            ny=ny*2*an;            if (ftv == 0)                u=atan2(nx, ak);                v=atan2(ny*cos(u),ak);                u=u+ftu;            elseif(ftv>0)                d=sqrt(nx*nx+ny*ny);                v=pi/2-atan2(d,ak);                u=atan2(ny,nx);            else                d=sqrt(nx*nx+ny*ny);                v=-pi/2+atan2(d,ak);                u=atan2(-ny,nx);            end            u=u/(pi);            v=v/(pi/2);            while(v<-1)                v=v+2;                u=u+1;            end            while(v>1)                v=v-2;                u=u+1;            end            while(u<-1)                u=u+2;            end            while(u>1)                u=u-2;            end            u=u/2+0.5;            v=v/2+0.5;            u=u*(N-1)+1;            v=v*(M-1)+1;                        fv=floor(v);fv1=floor(v)+1;pv=v-fv;fv1(fv1>M)=M;            fu=floor(u);fu1=floor(u)+1;pu=u-fu;fu1(fu1>N)=N;            resultPic(x+1,y+1,:)=double(oriPic(fv,fu,:)).*(1-pv).*(1-pu)+...                                 double(oriPic(fv1,fu,:)).*(pv).*(1-pu)+...                                 double(oriPic(fv,fu1,:)).*(1-pv).*(pu)+...                                 double(oriPic(fv1,fu1,:)).*(pv).*(pu);        end    end    resultPic=uint8(resultPic);end

函数调用及图像存储:
这里后面长宽数值可以任意设定,但是要求长宽数值一致,如果按照当前写法,结果被存储至result文件夹:

if ~exist('result','dir')   mkdir('result');endfor i=1:6    resultPic=createCubeMapFace(oriPic,i,500,500);    figure(i)    imshow(resultPic)    imwrite(resultPic,['result\',num2str(i),'.jpg'])end

另: 如图所示
图片序号[1,2,3,4,5,6]分别对应图片[右,后,左,前,上,下]

MATLAB全景图切割及盒图显示怎么实现

1.3 完整代码

function panoramic2boxoriPic=imread('889027-884424860.jpg');[rows,cols,~]=size(oriPic);for i=cols:-1:1    tempListR=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListG=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListB=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(:,i,:)=[];    else        break;    endendoriPic=oriPic(:,end:-1:1,:);for i=size(oriPic,2):-1:1    tempListR=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListG=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    tempListB=oriPic(floor(rows/4):ceil(3*rows/4),i,1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(:,i,:)=[];    else        break;    endendoriPic=oriPic(:,end:-1:1,:);for i=rows:-1:1    tempListR=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListG=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListB=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(i,:,:)=[];    else        break;    endendoriPic=oriPic(end:-1:1,:,:);for i=size(oriPic,1):-1:1    tempListR=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListG=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    tempListB=oriPic(i,floor(cols/4):ceil(3*cols/4),1);    if all(round(tempListR-mean(tempListR))==0)&&all(tempListR==tempListG)&&all(tempListR==tempListB)        oriPic(i,:,:)=[];    else        break;    endendoriPic=oriPic(end:-1:1,:,:);% =========================================================================if ~exist('result','dir')   mkdir('result');endfor i=1:6    resultPic=createCubeMapFace(oriPic,i,500,500);    figure(i)    imshow(resultPic)    imwrite(resultPic,['result\',num2str(i),'.jpg'])end% =========================================================================function resultPic=createCubeMapFace(oriPic,id,height,width)    [M,N,~]=size(oriPic);    resultPic=zeros([height,width,3]);    an=sin(pi/4);    ak=cos(pi/4);        faceTransform=[0,0;               pi/2,0;               pi,0;               -pi/2,0;               0,-pi/2;               0,pi];    ftu=faceTransform(id,1);    ftv=faceTransform(id,2);    for y=0:height-1        for x=0:width-1            nx=y/height-0.5;            ny=x/width-0.5;            nx=nx*2*an;            ny=ny*2*an;            if (ftv == 0)                u=atan2(nx, ak);                v=atan2(ny*cos(u),ak);                u=u+ftu;            elseif(ftv>0)                d=sqrt(nx*nx+ny*ny);                v=pi/2-atan2(d,ak);                u=atan2(ny,nx);            else                d=sqrt(nx*nx+ny*ny);                v=-pi/2+atan2(d,ak);                u=atan2(-ny,nx);            end            u=u/(pi);            v=v/(pi/2);            while(v<-1)                v=v+2;                u=u+1;            end            while(v>1)                v=v-2;                u=u+1;            end            while(u<-1)                u=u+2;            end            while(u>1)                u=u-2;            end            u=u/2+0.5;            v=v/2+0.5;            u=u*(N-1)+1;            v=v*(M-1)+1;                        fv=floor(v);fv1=floor(v)+1;pv=v-fv;fv1(fv1>M)=M;            fu=floor(u);fu1=floor(u)+1;pu=u-fu;fu1(fu1>N)=N;            resultPic(x+1,y+1,:)=double(oriPic(fv,fu,:)).*(1-pv).*(1-pu)+...                                 double(oriPic(fv1,fu,:)).*(pv).*(1-pu)+...                                 double(oriPic(fv,fu1,:)).*(1-pv).*(pu)+...                                 double(oriPic(fv1,fu1,:)).*(pv).*(pu);        end    end    resultPic=uint8(resultPic);endend

1.4 其他几组切割结果

图片源自:https://www.cgmodel.com/article/9004.html

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

part2 盒图展示

2.1 曲面绘制

使用surf绘制各个曲面后,并为各个曲面贴图:

for i=1:6    oriPic.(['p',num2str(i)])=imread(['result\',num2str(i),'.jpg']);   end[rows,cols,~]=size(oriPic.p1);[baseXY,baseZ]=meshgrid(1:cols,rows:-1:1);ax=GCa;hold(ax,'on')surf(baseXY(:,end:-1:1)-(1+rows)/2,-(rows-1)./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p1,'EdgeColor','none','FaceColor','interp')surf(-(rows-1)./2.*ones(size(baseXY)),baseXY-(1+rows)/2,baseZ,'CData',oriPic.p2,'EdgeColor','none','FaceColor','interp')surf(baseXY-(1+rows)/2,(rows-1)./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p3,'EdgeColor','none','FaceColor','interp')surf((rows-1)./2.*ones(size(baseXY)),baseXY(:,end:-1:1)-(1+rows)/2,baseZ,'CData',oriPic.p4,'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,ones(size(baseXY)),'CData',oriPic.p6(end:-1:1,end:-1:1,:),'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,rows-1+ones(size(baseXY)),'CData',oriPic.p5(:,end:-1:1,:),'EdgeColor','none','FaceColor','interp')

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

2.2 视角调整

通过设置axes属性将视角调整至盒子里面

ax=axes('parent',fig,'position',[-0.45 -0.45 1.9 1.9]);hold(ax,'on')ax.ZLim=[0,rows+1];ax.XLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.YLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.Color=[0 0 0];ax.CameraPosition=[0,0,rows/2];ax.CameraPositionMode='manual';ax.DataAspectRatio=[1,1,1];ax.DataAspectRatioMode='manual';ax.Projection='perspective';ax.CameraTargetMode='manual';ax.CameraViewAngle = 7;ax.View=[-2.7391 90.0000];ax.CameraTarget=[0 0 (rows-1)/2];ax.Toolbar.Visible='on';

运行后点击那个三位旋转按钮即可开始漫游

MATLAB全景图切割及盒图显示怎么实现

此时的盒图是无缝隙版本,有缝隙版放在后面

MATLAB全景图切割及盒图显示怎么实现

2.3 完整代码

无缝隙版:

function showBoxfor i=1:6    oriPic.(['p',num2str(i)])=imread(['result\',num2str(i),'.jpg']);   end[rows,cols,~]=size(oriPic.p1);[baseXY,baseZ]=meshgrid(1:cols,rows:-1:1);fig=figure('units','pixels','position',[300 80 500 500],...                       'Numbertitle','off','menubar','none','resize','off',...                       'name','box');                   ax=axes('parent',fig,'position',[-0.45 -0.45 1.9 1.9]);hold(ax,'on')ax.ZLim=[0,rows+1];ax.XLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.YLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.Color=[0 0 0];ax.CameraPosition=[0,0,rows/2];ax.CameraPositionMode='manual';ax.DataAspectRatio=[1,1,1];ax.DataAspectRatioMode='manual';ax.Projection='perspective';ax.CameraTargetMode='manual';ax.CameraViewAngle = 7;ax.View=[-2.7391 90.0000];ax.CameraTarget=[0 0 (rows-1)/2];ax.Toolbar.Visible='on';surf(baseXY(:,end:-1:1)-(1+rows)/2,-(rows-1)./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p1,'EdgeColor','none','FaceColor','interp')surf(-(rows-1)./2.*ones(size(baseXY)),baseXY-(1+rows)/2,baseZ,'CData',oriPic.p2,'EdgeColor','none','FaceColor','interp')surf(baseXY-(1+rows)/2,(rows-1)./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p3,'EdgeColor','none','FaceColor','interp')surf((rows-1)./2.*ones(size(baseXY)),baseXY(:,end:-1:1)-(1+rows)/2,baseZ,'CData',oriPic.p4,'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,ones(size(baseXY)),'CData',oriPic.p6(end:-1:1,end:-1:1,:),'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,rows-1+ones(size(baseXY)),'CData',oriPic.p5(:,end:-1:1,:),'EdgeColor','none','FaceColor','interp')end

MATLAB全景图切割及盒图显示怎么实现

有缝隙版:

function showBox2for i=1:6    oriPic.(['p',num2str(i)])=imread(['result\',num2str(i),'.jpg']);   end[rows,cols,~]=size(oriPic.p1);[baseXY,baseZ]=meshgrid(1:cols,rows:-1:1);fig=figure('units','pixels','position',[300 80 500 500],...                       'Numbertitle','off','menubar','none','resize','off',...                       'name','box');                   ax=axes('parent',fig,'position',[-0.45 -0.45 1.9 1.9]);hold(ax,'on')ax.ZLim=[0,rows+1];ax.XLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.YLim=[0-(1+rows)/2,rows+1-(1+rows)/2];ax.Color=[0 0 0];ax.CameraPosition=[0,0,rows/2];ax.CameraPositionMode='manual';ax.DataAspectRatio=[1,1,1];ax.DataAspectRatioMode='manual';ax.Projection='perspective';ax.CameraTargetMode='manual';ax.CameraViewAngle = 7;ax.View=[-2.7391 90.0000];ax.CameraTarget=[0 0 (rows+1)/2];ax.Toolbar.Visible='on';surf(baseXY(:,end:-1:1)-rows/2,-rows./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p1,'EdgeColor','none','FaceColor','interp')surf(-rows./2.*ones(size(baseXY)),baseXY-(1+rows)/2,baseZ,'CData',oriPic.p2,'EdgeColor','none','FaceColor','interp')surf(baseXY-(1+rows)/2,rows./2.*ones(size(baseXY)),baseZ,'CData',oriPic.p3,'EdgeColor','none','FaceColor','interp')surf(rows./2.*ones(size(baseXY)),baseXY(:,end:-1:1)-(1+rows)/2,baseZ,'CData',oriPic.p4,'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,zeros(size(baseXY)),'CData',oriPic.p6(end:-1:1,end:-1:1,:),'EdgeColor','none','FaceColor','interp')surf(baseXY'-(1+rows)/2,baseXY-(1+rows)/2,rows+ones(size(baseXY)),'CData',oriPic.p5(:,end:-1:1,:),'EdgeColor','none','FaceColor','interp')end

MATLAB全景图切割及盒图显示怎么实现
MATLAB全景图切割及盒图显示怎么实现

以上是“MATLAB全景图切割及盒图显示怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: MATLAB全景图切割及盒图显示怎么实现

本文链接: https://lsjlt.com/news/276774.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MATLAB全景图切割及盒图显示怎么实现
    小编给大家分享一下MATLAB全景图切割及盒图显示怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!part1 全景图切割原图:切割效果:以下是切割部分步骤:...
    99+
    2023-06-15
  • MATLAB 全景图切割及盒图显示的实现步骤
    目录part1 全景图切割1.1 边缘剔除1.2 图像裁剪1.3 完整代码1.4 其他几组切割结果part2 盒图展示2.1 曲面绘制2.2 视角调整2.3 完整代码part1 全景...
    99+
    2024-04-02
  • python切割图片的实现示例
    用opencv处理一下pillow也可以,但是试过有时候会把图片自动旋转180°,cv没有这个问题 import os from cv2 import cv2 def s...
    99+
    2024-04-02
  • Android中怎么实现一个图片切割工具类
    Android中怎么实现一个图片切割工具类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。图片切割工具类定义:public class ImageSpli...
    99+
    2023-05-30
    android
  • 怎么用CSS3实现全景图特效
    本篇内容介绍了“怎么用CSS3实现全景图特效”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  首先定义一些...
    99+
    2024-04-02
  • jquery不显示图片背景怎么办
    本教程操作环境:Windows10系统、jquery3.2.1版、DELL G3电脑jquery不显示图片背景怎么办?jquery中解决设置图片不显示jquery中解决设置背景图片无法显示let src='clock/img/aft...
    99+
    2023-05-14
    jQuery
  • OpenCV全景图像拼接的实现示例
    本文主要介绍了OpenCV全景图像拼接的实现示例,分享给大家,具体如下: left_01.jpg right_01.jpg Stitcher.py import numpy ...
    99+
    2024-04-02
  • js怎么实现点击切换checkbox背景图片
    小编给大家分享一下js怎么实现点击切换checkbox背景图片,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在制作网页的过程中,经常需要实现点击切换背景图片的效果,本文关注的是表单中che...
    99+
    2024-04-02
  • matlab怎么实现图像的自适应多阈值快速分割
    今天小编给大家分享一下matlab怎么实现图像的自适应多阈值快速分割的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • Python怎么实现图像分割
    本篇内容介绍了“Python怎么实现图像分割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法一import randomimpo...
    99+
    2023-06-29
  • MATLAB等高线图怎么实现
    要在MATLAB中绘制等高线图,可以使用contour函数。以下是一个例子:matlab% 创建一个网格[x, y] = meshg...
    99+
    2023-10-20
    MATLAB
  • android viewflipper实现左右滑动切换显示图片
    本文实例为大家分享了android viewflipper实现左右滑动切换显示图片的具体代码,供大家参考,具体内容如下 1.首先定义四个动画文件,表示当view切换的时候的显示...
    99+
    2022-06-07
    图片 Android
  • css怎么让背景图片居中显示
    今天小编给大家分享一下css怎么让背景图片居中显示的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,在页面中创建一个div...
    99+
    2023-07-04
  • Android实现拍照及图片显示效果
    本文实例为大家分享了Android拍照及图片显示的具体代码,供大家参考,具体内容如下 1、功能声明 当应用需要使用相机、NFC等外设时,需要在AndroidManifest...
    99+
    2022-06-06
    图片 Android
  • 使用OpenCV怎么实现全景图像拼接
    今天就跟大家聊聊有关使用OpenCV怎么实现全景图像拼接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Stitcher.pyimport numpy as&nbs...
    99+
    2023-06-15
  • css中怎么仅显示一次背景图像
    这篇文章主要为大家展示了“css中怎么仅显示一次背景图像”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中怎么仅显示一次背景图像”这篇文章吧。<htm...
    99+
    2024-04-02
  • Java实现全图背景水印的示例详解
    目录给图片添加水印的优点给图片添加水印的缺点添加全图水印给图片添加水印的优点 可以保护图片的版权:给图片添加水印可以显著地提高图片的版权保护效果。通常,如果没有版权水印的图片在网络上...
    99+
    2023-02-10
    Java实现全图背景水印 Java全图背景水印 Java 水印
  • CSS怎么实现响应式图像显示
    这篇文章主要介绍“CSS怎么实现响应式图像显示”,在日常操作中,相信很多人在CSS怎么实现响应式图像显示问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS怎么实现响应式图像...
    99+
    2024-04-02
  • java怎么实现图片上传并显示
    在Java中实现图片上传并显示的一种常见的方法是使用Servlet和JSP。下面是一个简单的示例代码: 创建一个Servlet类来...
    99+
    2023-10-24
    java
  • OpenCV-Python怎么实现两张图片自动拼接成全景图
    这篇文章给大家分享的是有关OpenCV-Python怎么实现两张图片自动拼接成全景图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景介绍图片的全景拼接如今已不再稀奇,现在的智能摄像机和手机摄像头基本都带有图片自...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作