16

ファイルに対していくつかの簡単な操作を試してみたかったので、ファイルを開いて保存することから始めました(Pythonを使用しています)

image = cv2.imread("image.png")
cv2.imwrite("image_processed.png", image)

この操作の後、33kBのオリジナルimageが同じ外観の144kB画像に変換されます。

私はこのようなことを試みました:http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html ?highlight = imwrite#imwrite

    params = list()
    params.append(cv.CV_IMWRITE_PNG_COMPRESSION)
    params.append(8)

    image = cv2.imread("image.png")
    cv2.imwrite("image_processed.png",image,params)

しかし、これはあまり変わりません(サイズは132kBに減少しました)

これは私が使用している画像です:

ここに画像の説明を入力してください

4

4 に答える 4

8

GIMPのような一部のpngライターは、opencvで使用される標準のlibpngよりもはるかに優れた圧縮PNGを記述します。また、Imagemagickを使用して画像を再度開いて保存し、(OpenCVと比較して)どのような違いが生じるかを確認することもできます。

pngcrushのように、PNGをより適切に再圧縮しようとする特殊なソフトウェアもあります。

問題の画像を提供できますか?ファイルサイズの最適化に関して、それで遊んでみたいと思います。

于 2012-08-31T13:57:15.530 に答える
7

ypnosで示唆されているように、ソースファイルはjpgです(拡張子がpngの場合でも)。そのため、png形式で保存すると、形式(jpgからpng)を変更するため、より多くのスペースが使用されます。

最後の行を次のように置き換えてみてください。

cv2.imwrite("image_processed.jpg",image,params)

そして、サイズはそれほど変わらないことがわかります。

または、コードをそのままにして、http: //upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.pngなどの別の画像を使用します

于 2014-05-26T09:42:28.630 に答える
1

半関連ですが、同じ問題がありましmatplotlib.image.imsaveた。8ビットのグレースケール画像を16ビットとして保存し、8scipy.misc.bytescaleビット配列であることを確認するために使用した後でもサイズが膨らみました。ただし、scipy.misc.imsave8ビット画像として正しく保存しました。

于 2015-08-06T04:35:47.450 に答える
0

サードパーティのコマンドラインツールoptipngを使用して、何も失うことなくpngファイルサイズを再圧縮および縮小できます。

参照:

http://optipng.sourceforge.net/pngtech/optipng.html

https://github.com/johnpaulada/optipng

于 2018-12-07T07:17:53.603 に答える