该模块提供了一个简单而强大的机制,使用接缝雕刻算法调整图像大小。

pyCAIR的Python项目详细描述


pycair logo

pycair是一个内容感知图像大小调整(cair)库,基于sEAM雕刻,用于内容感知图像大小调整纸张。

目录

  1. CAIR是如何工作的
  2. 理解研究论文
  3. 项目结构和说明
  4. 安装
  5. 用法
  6. 演示
  7. 屏幕截图
  8. 待办事项
  9. < > >

    它是如何工作的

    • 从提供的图像生成能量图和图像的灰度格式。

    • 接缝雕刻算法通过从能量图中提取最小的能量值来寻找图像中不太有用的区域。

    • 在动态规划与回溯相结合的帮助下,接缝雕刻算法使用自上而下或左向右的方法在图像上生成单独的接缝(取决于垂直或水平调整大小)

    • 通过逐行遍历图像矩阵,计算每个条目的所有可能连接接缝的累积最小能量。通过将当前像素与前一行相邻像素的最小值相加,计算出最小能级。

    • 从最后一行开始从能量矩阵中找出成本最低的接缝并将其移除。

    • 重复此过程,直到根据用户指定的比率调整图像大小。

    <表><广告>result7result8dp矩阵 以最小能量回溯

    对研究论文的直观解释

    < Buff行情>

    notes1

    < Buff行情>

    notes2

    < Buff行情>

    notes3

    <块引用>< Buff行情>

    notes4

    项目结构和说明

    目录结构:

    pycair(根目录)
    -图像/
    -结果/
    -序列/(压缩到存储库中)
    -视频/
    -notdoneyet.py
    -imgtovideos.py
    -opencv_generators.py
    -seam_carve.py
    -帮助程序.py

    文件:notdoneyet.py

    • 用户输入()-
      参数:
      • 对齐:指定调整大小操作必须在哪个轴上执行。
      • 缩放比率:在0和1之间进行浮点运算以缩放输出图像。
      • 显示接缝:如果未选择此选项,则图像仅在背景中接缝。
      • 输入图像
      • 生成序列:执行所有操作后生成中间序列以形成视频。

    文件:imgtovideos.py

    • generateVideo()-将每个图像路径传递到vid()以生成视频。

    • **vid()**-将每个输入图像写入视频缓冲区以创建完整的视频。

    文件:opencv_generators.py

    • generateenergymap()-使用opencv内置函数获取能量并将图像转换为灰度。

    • **generateColorMap()**-使用opencv内置函数在给定图像上叠加热图。

    文件:seam_carve.py

    • getenergy()-使用sobel运算符和卷积函数生成能量图。

    • getMaps()-使用动态编程实现了获取接缝的函数。另外,将最小接缝的结果存储在单独的列表中,以便回溯。

    • DrawSeam()-在图像上使用红色绘制接缝(垂直和水平)。

    • 雕刻()-重塑和裁剪图像。

    • cropbycolumn()-在两个轴(即垂直轴和水平轴)上执行裁剪。

    • cropbyrow()-旋转图像以忽略重复计算,并将旋转图像作为cropbycolumn函数的输入。

    文件:helpers.py

    其他文件夹:

    安装

    用法

    '''It runs the entire code and returns final results'''frompyCAIRimportuser_inputuser_input(alignment,scale,seam,input_image,generate_sequences)'''It generates the energy map'''frompyCAIRimportgenerateEnergyMapgenerateEnergyMap(image_name,file_extension,file_name)'''It generates color maps'''frompyCAIRimportgenerateColorMapgenerateColorMap(image_name,file_extension,file_name)'''It converts sequence of images generated to video'''frompyCAIRimportgenerateVideogenerateVideo()'''It returns all the paths where images are present for generating video'''frompyCAIRimportgetToProcessPathsgetToProcessPaths()'''It returns seams, cropped image for an image'''frompyCAIRimportcropByColumnseam_img,crop_img=cropByColumn(image,display_seams,generate,lsit,scale_c,fromRow)'''It returns seams, cropped image for an image'''frompyCAIRimportcropByRowseam_img,crop_img=cropByRow(image,display_seams,generate,lsit,scale_c)'''It returns created folder'''frompyCAIRimportcreateFolderf=createFolder(folder_name)'''It returns extension of file'''frompyCAIRimportgetFileExtensionf=getFileExtension(file_name)'''It writes image to specified folder'''frompyCAIRimportwriteImagef=writeImage(image,args)

    运行中

    video1

    video2

    屏幕截图

    图像1的结果:

    <表><广告>result0result1result2原始图像 灰度能量图 <表><广告>result3result4< /广告><正文>冬季彩色地图 彩色地图热<表><广告>resultt5result6< /广告><正文>立柱接缝剪切的列<表><广告>result7result8< /广告><正文>行的接缝裁剪行

    图像2的结果:

    <表><广告>result0>>>>>/th>result1result2< /广告><正文>原始图像 灰度能量图 <表><广告>result3result4< /广告><正文>冬季彩色地图 彩色地图热<表><广告>resultt5result6< /广告><正文>立柱接缝剪切的列<表><广告>result7结果8< /广告><正文>行的接缝裁剪行

    待办事项

    • [X]实现seam算法
    • [X]生成图像的能量图和颜色图
    • [X]显示垂直接缝
    • [X]显示水平接缝
    • [X]裁剪列
    • [X]裁剪行
    • [X]对命令行应用程序使用argparse
    • [X]将子样本分别存储在裁剪和接缝的不同目录中
    • [X]从子样本生成视频/GIF
    • [X]提供更好的自述文件
    • [X]提供使用示例
    • []为每个函数生成单元测试
    • []添加持续集成服务(Travis、工作服)
    • []添加徽章
    • []提供关于PYPI的更好的项目描述
    • []使用spinx的文档
    • []使用yolov2集成对象检测
    • []识别最重要的对象(使用预测对象的概率)
    • []反转最重要物体的能量值
    • []重新应用接缝切割并比较结果

    许可证

    本软件的许可证由GNU通用公共许可v3.0Chirag Shah

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
java为什么加载个人密钥库需要这么多时间?   当我使用main创建Android应用程序UI时,如何通过java修改它。xml文件?   java Tomcat 6和7:WebappClassLoader:尝试为名称org/apache/openjpa/persistence/osgi/BundleUtils复制类定义   java`parseInt()`和`parseDouble()`throw`NumberFormatExeption`   JavaSpringMongoDB填充引用   在LinuxMint中打开Eclipse时发生java错误;OpenJDK 64位服务器VM警告:忽略选项MaxPermSize=512m;支持在8.0中被删除   使用PKCS7Padding的AES CBC加密在Java和Objective中有不同的结果   java为什么Jackson要用一个以类命名的额外层来包装我的对象?   json在Java中使用parallelStream提取值   JavaSpring存储库自动生成方法:按给定的顶部编号+按字段描述排序选择   java是否有可序列化的标准闭包接口?   .NET与Java在初创公司的web应用程序开发   如何修复java。java中的lang.unsatifiedLinkError   JavaFX+Spring Boot+Hibernate应用程序对多个环境的java支持   自定义视图组中的java更改未呈现