我正在使用OpenCV 3.1和Python.
当我试图用文本去校正(修正倾斜)图像时,我的问题出现了.我正在使用cv2.warpPerspective它,但图像失去了很多质量.你可以在这里看到图像的原始部分:
然后,在这里,"旋转"的图像:
它就像平滑一样.
我正在使用形态转换,如:
kernel = np.ones((2, 2), np.uint8)
blur_image = cv2.erode(tresh, kernel, iterations=1)
Run Code Online (Sandbox Code Playgroud)
和
white_mask2 = cv2.morphologyEx(white_mask2, cv2.MORPH_OPEN, kernel)
Run Code Online (Sandbox Code Playgroud)
看它是否有所改善,但没有.
所以,我不知道我能做些什么.也许有一种方法可以不失去图像的质量,或者,还有另一种方法可以旋转图像而不会丢失质量.我知道这个方法:
root_mat = cv2.getRotationMatrix2D(to_rotate_center, angle, 1.0)
result = cv2.warpAffine(to_rotate, root_mat, to_rotate.shape, flags=cv2.INTER_LINEAR)
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用,因为我必须在这里旋转每个矩形:
而不是整个形象.这意味着,我发现这样做的最好方法是warpPerspective,它工作正常,但质量下降.我希望得到一个避免质量损失的建议.
我有一个16x16透明的png而且我做了
convert -rotate -45 a.png b.png
Run Code Online (Sandbox Code Playgroud)
这将它旋转并创建一个大小为22x22的新图像b.png,当我在背景中使用时,显示原始图像(16x16)与底层背景一起旋转但是出现的新填充显示为白色背景.
如何使新填充物透明化?
如果那是不可能的,那么我怎么能让新图像的所有背景都是一种颜色?
我的应用程序在Canvas周围激活精灵实例,然后在屏幕上朝着ax/y坐标移动.我希望能够围绕其中心旋转精灵,使其面向目标坐标.我正在使用精灵表,并有剪切问题.我也找到了很多很好的例子,但似乎没有任何东西可以覆盖我正在寻找的东西.这个例子非常接近,但为了提高效率,我使用的是ImagePooler类,无法在每次绘制/旋转时重新加载图像.因此,如果有人知道如何旋转预装的图像w/out切割我的精灵表,我将非常感激.
我min3d library从google.com 获得了示例代码和示例.
它工作得很完美,甚至可以处理变化后的图像.
现在我想.obj用触摸事件旋转文件,比如用手指触摸旋转汽车.因为它在gl.rotation方法中使用动画对象,这有点难以理解.我不知道怎么做,请给我解决方案..
上传之前,我在查看图片时看到了很多帖子。一篇文章使用FileReader实现了一种非常简单的方法:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#preview_image').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#image_input").change(function(){
readURL(this);
});
Run Code Online (Sandbox Code Playgroud)
但是问题是图像旋转加载!那么我是否缺少一种缺少的财产?或FileReader不够成熟,无法理解图像的布局。不知道!
也许我应该使用其他方法!任何有关此问题的想法将不胜感激。
谢谢
我正在尝试在Matplotlib中绘制一个2D图像(从png导入)并以任意角度旋转它.我想创建一个简单的动画来显示一个对象随时间的旋转,但是现在我只想尝试旋转图像.我在以下代码上尝试了几种变体但没有成功:
import matplotlib.pyplot as plt
import matplotlib.transforms as tr
import matplotlib.cbook as cbook
image_file = cbook.get_sample_data('ada.png')
image = plt.imread(image_file)
imAx = plt.imshow(image)
rot = tr.Affine2D().rotate_deg(30)
imAx.set_transform(imAx.get_transform()+rot)
plt.axis('off') # clear x- and y-axes
plt.show()
Run Code Online (Sandbox Code Playgroud)
我确定我错过了一些东西,但我无法从matplotlib文档和示例中找到它.
谢谢!
我正在开发用于在谷歌地图上定位图像的用户界面.我从:http://overlay-tiler.googlecode.com/svn/trunk/upload.html开始,这非常接近我想要的.
但是我想要一个旋转工具,一个缩放工具和一个翻译工具(后者存在),而不是3个接触点.
我试图添加一个旋转工具,但它不能像我预期的那样工作:
我在左下角放了一个点来控制旋转(围绕图像的中心).鼠标拖动控制点,我计算其他3个点.
我的代码基于移动器对象,但我更改了onMouseMove函数:
overlaytiler.Rotater.prototype.rotateDot_ = function(dot, theta, origin) {
dot.x = ((dot.x - origin.x) * Math.cos(theta) - (dot.y - origin.y) * Math.sin(theta)) + origin.x;
dot.y = ((dot.x - origin.x) * Math.sin(theta) + (dot.y - origin.y) * Math.cos(theta)) + origin.y;
dot.render();
};
overlaytiler.Rotater.prototype.onMouseMove_ = function(e) {
var dots = this.controlDots_;
var center = overlaytiler.Rotater.prototype.getCenter_(dots);
// Diagonal length
var r = Math.sqrt(Math.pow(this.x - center.x, 2) + Math.pow(this.y - center.y, 2));
var old = {
x: this.x, …Run Code Online (Sandbox Code Playgroud) 我需要一个地图旋转功能,就像openLayers 3中提供的功能一样(查看下面的示例):
http://ol3js.org/en/master/examples/drag-rotate-and-zoom.html
有没有办法使用leafletjs库,或者使用自定义插件做同样的事情?
我正在opencv中执行一个项目来检测用户填写表单中的手写字符.我已经使用Hough Line Transform制作了检测扫描图像的倾斜角度的算法.但是当图像旋转180度时它不起作用,因为通过霍夫线函数将0和180度视为相同.我的图像包含一些矩形来填充其中的数据和一些文本.那么如何检测扫描图像是否旋转180度?
因为我必须首先校正图像的倾斜角度,然后我只能使用前面提供的空模板形式的矩形坐标来确定用户填充数据(我需要提取)的确切位置,不使用chacater识别的答案非常感谢.
我知道可以创建一个Drawable(或Bitmap)的旋转版本,因此(在这里写一下):
@JvmStatic
fun getRotateDrawable(d: Drawable, angle: Int): Drawable {
if (angle % 360 == 0)
return d
return object : LayerDrawable(arrayOf(d)) {
override fun draw(canvas: Canvas) {
canvas.save()
canvas.rotate(angle.toFloat(), (d.bounds.width() / 2).toFloat(), (d.bounds.height() / 2).toFloat())
super.draw(canvas)
canvas.restore()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要autoMirrored设置为一些drawable(在我的情况下是VectorDrawable),它将翻转(镜像使得左边是右边,右边是左边,但不影响顶部和底部),以防设备的区域设置是RTL.
作为一个例子(这只是一个例子!),如果你拿一个显示左箭头的drawable,翻转后它将是一个右箭头.
遗憾的是,这只能从API 19获得.
这就是为什么我决定用它制作一个新的Drawable,成为原版的翻版
我发现了一篇很好的文章,在这里使用Matrix 对View做同样的事情.所以我试过这个:
@JvmStatic
fun getMirroredDrawable(d: Drawable): Drawable {
return object : LayerDrawable(arrayOf(d)) {
override fun draw(canvas: Canvas) {
canvas.save()
val matrix = Matrix()
// use this …Run Code Online (Sandbox Code Playgroud) image-rotation ×10
android ×3
javascript ×2
opencv ×2
python ×2
3d ×1
filereader ×1
google-maps ×1
image ×1
imagemagick ×1
leaflet ×1
maps ×1
matplotlib ×1
min3d ×1
opencv3.1 ×1
openlayers ×1
png ×1
sprite-sheet ×1
transparency ×1