标签: image-processing

C#中保存的JPG的质量

我制作了一个小型的C#应用​​程序来创建.jpg格式的图像.

pictureBox.Image.Save(name,ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

图像成功创建.我输入原始图片,用它做一些事情并保存.然而,这张新照片的质量低于原始照片的质量.

有没有办法设定所需的质量?

c# image-processing

64
推荐指数
5
解决办法
7万
查看次数

在OpenCV中将RGB转换为黑白

我想知道如何将RGB图像转换为黑白(二进制)图像.

转换后,如何将修改后的图像保存到磁盘?

c c++ opencv image-processing computer-vision

64
推荐指数
1
解决办法
16万
查看次数

什么是图像处理的关键点?

例如,在使用OpenCV时,通常使用SURF等算法来检测关键点.我的问题是这些关键点究竟是什么?

我知道它们是图像中的某种"兴趣点".我也知道它们是尺度不变的并且是圆形的.

此外,我发现他们有方向但我无法理解这实际上是什么.这是一个角度,但在半径和东西之间?你能解释一下吗?我想我首先需要的是更简单的东西,然后更容易理解论文.

opencv image-processing surf sift keypoint

64
推荐指数
2
解决办法
3万
查看次数

如何在Python中使用PIL将图像合成到另一个图像上?

我需要拍摄一张图片并将其放置在新生成的白色背景上,以便将其转换为可下载的桌面壁纸.所以这个过程会:

  1. 生成具有1440x900尺寸的全新白色图像
  2. 将现有图像放在顶部,居中
  3. 保存为单张图片

在PIL中,我看到了ImageDraw对象,但没有任何迹象表明它可以将现有图像数据绘制到另一个图像上.任何人都可以推荐的建议或链接?

python image-processing python-imaging-library

63
推荐指数
3
解决办法
7万
查看次数

将PHP页面作为图像返回

我试图读取一个图像文件(确切地说是.jpeg),然后"回显"它回到页面输出,但是显示图像...

我的index.php有一个像这样的图像链接:

<img src='test.php?image=1234.jpeg' />
Run Code Online (Sandbox Code Playgroud)

我的PHP脚本基本上这样做:

1)读取1234.jpeg 2)echo文件内容... 3)我有一种感觉我需要用mime类型返回输出,但这是我迷路的地方

一旦我搞清楚了,我将一起删除文件名输入并将其替换为图像ID.

如果我不清楚,或者您需要更多信息,请回复.

php image-processing http-headers mime-types

61
推荐指数
2
解决办法
9万
查看次数

如何根据方向元数据旋转JPEG图像?

我有一些服务器代码在上传图像时生成缩略图.问题在于,当拍摄图像并旋转相机/设备时,即使在任何图像查看软件中以正确的方向显示全尺寸图像本身,也会旋转缩略图.这只发生在jpgs上.

在OSX上使用Preview,我可以看到jpgs中嵌入了方向元数据.当我使用ImageTools(Grails插件)生成缩略图时,EXIF元数据不在缩略图中,这就是缩略图显示为旋转的原因.

通过离线对话,我了解到虽然读取EXIF元数据相对容易,但没有简单的方法来编写它,这就是生成jpg缩略图时数据丢失的原因.

所以看来我有两个选择:

  1. 使用ImageMagick生成缩略图.缺点是它需要在我们的服务器上安装更多软件.
  2. 阅读EXIF Orientation数据是代码并适当旋转缩略图.

有没有人知道其他任何选择?

java groovy image-processing

61
推荐指数
3
解决办法
4万
查看次数

什么是最好的JavaScript图像处理库?

我的网站需要一些踢屁股效果,如高斯模糊,噪音,卷积滤镜,形态操作等.所有效果必须动态应用(无渲染前渲染图像)并随时间变化.

什么是最强大的图像处理库,用JavaScript实现?

javascript image-processing

60
推荐指数
3
解决办法
6万
查看次数

动画画布看起来像电视噪音

我有一个名为的函数generateNoise(),它创建一个canvas元素并为其绘制随机的RGBA值; 这,给出了噪音的外观.


我的问题

什么是无限制动噪音的最佳方式,以给出运动的外观.这可能会有更多的生命?


的jsfiddle

function generateNoise(opacity) {
    if(!!!document.createElement('canvas').getContext) {
        return false;
    }
    var canvas = document.createElement('canvas'),
        ctx = canvas.getContext('2d'),
        x,y,
        r,g,b,
        opacity = opacity || .2;

        canvas.width = 55;
        canvas.height = 55;

        for (x = 0; x < canvas.width; x++){
            for (y = 0; y < canvas.height; y++){
                r = Math.floor(Math.random() * 255);
                g = Math.floor(Math.random() * 255);
                b = Math.floor(Math.random() * 255);

                ctx.fillStyle = 'rgba(' + r + ',' + b + ',' + g + …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas image-processing html5-canvas

60
推荐指数
6
解决办法
2万
查看次数

检测器,提取器和匹配器的分类

我是opencv的新手,并尝试在两个图像之间实现图像匹配.为此,我试图理解特征描述符,描述符提取器和描述符匹配器之间的区别.我遇到了很多术语,试图在opencv文档网站上阅读它们,但我似乎无法理解这些概念.我理解这里的基本区别.特征检测与描述符提取的区别

但是在研究这个主题时我遇到了以下术语:

快速,GFTT,SIFT,SURF,MSER,STAR,ORB,BRISK,FREAK,Brief

我理解FAST,SIFT,SURF是如何工作的,但似乎无法弄清楚上面哪些只是探测器,哪些是提取器.

然后是匹配者.

FlannBased,BruteForce,knnMatch以及其他一些人.

经过一些阅读后,我认为某些匹配器只能与某些提取器一起使用,如此处所述.OpenCV ORB功能检测器如何工作? 给出的分类非常清楚,但它仅适用于少数提取器,我不理解float和uchar之间的区别.

所以基本上,有人可以请

  1. 如上所述,基于float和uchar,或其他类型的分类,对检测器,提取器和匹配器的类型进行分类?
  2. 解释float和uchar分类之间的区别或者使用哪种分类?
  3. 提到如何初始化(代码)各种类型的探测器,提取器和匹配器?

我知道它要求很多,但我将非常感激.谢谢.

c++ opencv image-processing computer-vision feature-detection

58
推荐指数
1
解决办法
2万
查看次数

在一组cv :: Point上执行cv :: warpPerspective以进行伪偏移

我正在尝试对一组点进行透视变换以实现偏斜效果:

http://nuigroup.com/?ACT=28&fid=27&aid=1892_H6eNAaign4Mrnn30Au8d

我正在使用下面的图像进行测试,绿色矩形显示感兴趣的区域.

我在想,如果有可能实现,我希望使用的简单组合的效果cv::getPerspectiveTransformcv::warpPerspective.我正在分享我到目前为止所写的源代码,但它不起作用.这是结果图像:

因此,有一个vector<cv::Point>定义感兴趣的区域,但点不存储在任何特定的顺序载体内,这件事情我不能在检测过程中发生改变.无论如何,稍后,向量中的点用于定义a RotatedRect,而这又用于组装cv::Point2f src_vertices[4];,所需的变量之一cv::getPerspectiveTransform().

我对顶点及其组织方式的理解可能是其中一个问题.我还认为使用a RotatedRect不是存储ROI原始点的最佳方法,因为坐标会稍微改变以适应旋转的矩形,这并不是很酷.

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    cv::Mat src = cv::imread(argv[1], 1);

    // After some magical procedure, these are points detect that represent …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing perspective skew

57
推荐指数
4
解决办法
4万
查看次数