在本文中,您将会了解到关于使用CSS模糊图像的一部分的新资讯,同时我们还将为您解释使用css模糊图像的一部分是的相关在本文中,我们将带你探索使用CSS模糊图像的一部分的奥秘,分析使用css模糊图像的一
在本文中,您将会了解到关于使用CSS模糊图像的一部分的新资讯,同时我们还将为您解释使用css模糊图像的一部分是的相关在本文中,我们将带你探索使用CSS模糊图像的一部分的奥秘,分析使用css模糊图像的一部分是的特点,并给出一些关于c – cv :: warpPerspective仅显示扭曲图像的一部分、CSS sprite图像背景 – 重复它的一部分、css – ie11翻译缩放模糊图像、delphi – 如何绘制图像的一部分?的实用技巧。
本文目录一览:- 使用CSS模糊图像的一部分(使用css模糊图像的一部分是)
- c – cv :: warpPerspective仅显示扭曲图像的一部分
- CSS sprite图像背景 – 重复它的一部分
- css – ie11翻译缩放模糊图像
- delphi – 如何绘制图像的一部分?
使用CSS模糊图像的一部分(使用css模糊图像的一部分是)
请看一下这段代码:
HTML文件
<div id="image"> <div></div> </div>
CSS文件
#image { width: 940px; height: 360px; background-image: url('../img/photo.png'); } #image .blur { background-image: url('../img/photo.png'); background-position: center right; -webkit-filter: blur(3px); -moz-filter: blur(3px); -o-filter: blur(3px); -ms-filter: blur(3px); filter: blur(3px); filter: blur(3px); float: right; height: 100%; width: 360px; }
CSS中有可能吗?
解决方法
#image { ... overflow: hidden; } #image .blur { ... margin-right: -1px; }
这是JSFiddle中的工作示例.
c – cv :: warpPerspective仅显示扭曲图像的一部分
它的工作原理是图像扭曲到所需的视角,但裁剪关闭.它将扭曲的图像移动到图像框之外.我假设原因是因为操作导致负坐标.
我已经计算了手动计算翻译矩阵的点,而不是通过使用任何opencv:s函数来计算,因为棋盘函数未能检测到正确的点.
我想这可以通过对转换矩阵进行其他更改来解决.但那怎么办?另外,有没有办法确保变换后的图像沿x轴居中,然后将y轴调整到所需位置?
现在完成工作的代码段:
cv::Mat image; // image is loaded with the original image cv::Mat warpPers; // The container for the resulting image cv::Mat H; std::vector<cv::Point2f> src; std::vector<cv::Point2f> dst; // In reality several more points. src.push_back(cv::Point2f(264,301)); src.push_back(cv::Point2f(434,301)); src.push_back(cv::Point2f(243,356)); src.push_back(cv::Point2f(476,356)); dst.push_back(cv::Point2f(243,123)); dst.push_back(cv::Point2f(476,123)); dst.push_back(cv::Point2f(243,356)); dst.push_back(cv::Point2f(476,356)); H = cv::findHomography(src,dst,CV_RANSAC); cv::warpPerspective(image,newPers,H,cv::Size(3000,3000),cv::INTER_NEAREST | CV_WARP_FILL_OUTLIERS ); cv::namedWindow("Warped persp",cv::WINDOW_AUTOSIZE ); cv::imshow( "Warped persp",newPers);
解决方法
实际上,您提供的图像中的某些点可能位于x轴或y轴的负部分.
所以你必须在扭曲图像之前做一些检查.
步骤1:使用findHomography找到单应性H.
你会得到一个经典的单应性结构
H = [ h00,h01,h02; h10,h11,h12; h20,h21,1];
第2步:在变形后搜索图像角落的位置
那么让我来定义角落的顺序:
(0,0) ________ (0,w) | | |________| (h,0) (h,w)
要做到这一点,只需创建一个这样的矩阵:
P = [0,w,0; 0,h,h; 1,1,1]
使用H制作产品并获得扭曲坐标:
P' = H * P
步骤3:使用这些新的4点检查x和y的最小值,并获得扭曲图像的大小
之后,您已经完成了产品,您会收到类似的东西:
P' = [s1*x1,s2*x2,s3*x3,s4*x4; s1*y1,s2*y2,s3*y3,s4*y4; s1,s2,s3,s4]
因此,要获得新的有效坐标,只需将第1行和第2行除以第3行
之后检查第一行上列的最小值,以及第二行上行的最小值(使用cvReduce)
找到包含图像的边界框(即warpPerspective函数的dst矩阵的维度),用cvReduce查找每行的最大值
让minx成为第一行(即列)的最小值,maxx(1行的最大值)
miny和maxy为第二排.
所以扭曲图像的大小应该是cvSize(maxx-minx,maxy-miny)
步骤4:对单应性添加校正
检查minx和/或miny是否为负,如果minx < 0然后将-minx添加到h02并且如果miny< 0,然后将-miny添加到h12 所以H应该是:
H = [ h00,h02-minx; //if minx <0 h10,h12-miny; //if miny <0 h20,1];
第5步:扭曲图像
CSS sprite图像背景 – 重复它的一部分
例如:
background-position : -13px top ;
background-repeat : repeat-y ;
因为我得到了整个精灵图像重复…
解决方法
css – ie11翻译缩放模糊图像
我正在使用translateX和translateY没有任何问题,但缩放导致图像变得模糊.
@media (min-width: 1100px) { .balloon-outer,.balloon-inner,.balloon { height: 100%; position: absolute; width: 100%; bottom: 0; right: 0; animation-duration: 60s; animation-delay: 0; animation-iteration-count: infinite; animation-direction: normal; will-change: transform; pointer-events: none; } .balloon-outer {overflow-y: hidden; transform-origin: 50% 50%; animation-name: travel-x; animation-timing-function: ease-in; transform: translateX(-20%); } .balloon { transform-origin: 50% 50%; animation-name: travel-y; animation-timing-function: ease-out; transform: translateY(90%); } .balloon-inner {background:url("https://www.inty.com/wp-content/uploads/balloon.png") no-repeat scroll 100% 100% / auto 40%; transform-origin: 100% 100%; animation-name: scale; animation-timing-function: linear; transform: scale(3); } } @keyframes scale { 0% {transform: scale(3);} 80% {transform: scale(0);} 100% {transform: scale(0);} } @keyframes travel-x { 0% {transform: translateX(-10%);} 80% {transform:translateX(-45%);} 100% {transform:translateX(-45%);} } @keyframes travel-y { 0% {transform: translateY(120%);} 80% {transform:translateY(-70%);} 100% {transform:translateY(-70%);} }
<div><div><div></div></div></div>
http://codepen.io/rachelreveley/pen/xdLGEO
我尝试过这个技巧,我曾在几个地方看过,但没有区别.
-webkit-backface-visibility: hidden; -ms-transform: translateZ(0); /* IE 9 */ -webkit-transform: translateZ(0); /* Chrome,Safari,Opera */ transform: translateZ(0);
解决方法
@keyframes travel-x { 0% {transform: translate3d(-10%,0);} 80% {transform:translate3d(-45%,0);} 100% {transform:translate3d(-45%,0);} } @keyframes travel-y { 0% {transform: translate3d(0,120%,0);} 80% {transform:translate3d(0,-70%,0);} 100% {transform:translate3d(0,0);} }
在您的示例中使用翻译的任何地方都这样做. translate3d启用硬件加速,这将有助于动画.
你可以看到this post获取更多信息.
delphi – 如何绘制图像的一部分?
procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Brush.Style := bsSolid; PaintBox1.Canvas.FillRect(GameWindow.Screen.ClientRect); PaintBox1.Canvas.Draw(0,FBitmap,FOpacity); end;
解决方法
... IntersectClipRect(PaintBox1.Canvas.Handle,20,PaintBox1.Width - 20,PaintBox1.Height - 20); PaintBox1.Canvas.Draw(0,FOpacity);
当然,我确定你知道你的Canvas.Draw调用中的0,0是坐标.你可以画到你喜欢的地方:
... FBitmap.Canvas.copyRect(Rect(0,80,80),FBitmap.Canvas,Rect(20,100,100)); FBitmap.SetSize(80,80); PaintBox1.Canvas.Draw(20,FOpacity);
如果您不想剪切绘图框的区域,并且不想修改源位图(FBitmap),并且不想对其进行临时复制,则可以直接调用AlphaBlend而不是通过Canvas.画:
var BlendFn: TBlendFunction; begin BlendFn.BlendOp := AC_SRC_OVER; BlendFn.BlendFlags := 0; BlendFn.sourceConstantAlpha := FOpacity; BlendFn.AlphaFormat := AC_SRC_ALPHA; winapi.windows.AlphaBlend(PaintBox1.Canvas.Handle,PaintBox1.Height - 20,FBitmap.Canvas.Handle,BlendFn);
今天关于使用CSS模糊图像的一部分和使用css模糊图像的一部分是的讲解已经结束,谢谢您的阅读,如果想了解更多关于c – cv :: warpPerspective仅显示扭曲图像的一部分、CSS sprite图像背景 – 重复它的一部分、css – ie11翻译缩放模糊图像、delphi – 如何绘制图像的一部分?的相关知识,请在本站搜索。
本文标签: