検索
ホームページバックエンド開発Python チュートリアルOpenCvを使用して簡単な点描絵画を作成します。

はじめに
オープンソース コンピューター ビジョン ライブラリ (OpenCV) は、画像やビデオ ファイルなどの視覚入力を処理するための、無料で利用できるプログラミング ツールを提供します。これには、さまざまなプログラミング言語を介してアクセスできる、すぐに使用できる関数が多数含まれています。ここに投稿した例では Python を使用しています。したがって、コードを理解したい場合は、少なくとも Python と NumPy の基本的な知識が必要です。 OpenCV の入門を探している場合は、このリンクが非常に役立つ可能性があります: [https://dev.to/arpitmandliya/opencv-python-tutorial-3dac]。

ピクセルが画像を作る仕組み
ほとんどの場合、コンピューター画像は RGB (OpenCV では BGR) モデルに基づいています。これは、ピクセルの色が Red、Green、および Blue のコンポーネントの混合であることを意味します。他のモデル (例: Hue、Saturation、Value) やベクター グラフィックス (SVG または PDF) もありますが、説明は省略します。ここにあります。

コンピューター上の画像は、色情報を含むピクセルの集合として表現できます。より専門的な用語で言えば、画像は 3 次元配列 (または 3 つのカラー チャネルを持つピクセルのマトリックス) であり、最初の 2 次元が画像のサイズ (高さと幅) を決定し、3 番目の次元には赤、緑の値が含まれます。および青 (各色は 0 ~ 255 の値)。画像にカラー チャネルが 1 つだけある場合 (8 ビット画像)、それは 0 (黒) から 255 (白) の範囲のさまざまなグレー値を持つグレースケール画像になります。 図 1 はそれを示しています。

Making a simple pointillism painting using OpenCv.
図 1: 画像は配列として表されます。右側はカラー イメージの例です。赤、緑、青の値の範囲は 0 ~ 255 (0、0、255 は青) です。左側は、さまざまなグレーの色合いを表す 1 つのチャネルを持つグレースケール イメージです。

色情報をさまざまなサイズのドットに変換する
上で説明した原則は、NumPy ライブラリと OpenCV ライブラリを使用して Python で画像編集を実行するために適用できます。この例では、ループを使用して、NumPy 配列として表される画像を処理します。このループは画像内のすべてのピクセルを反復するのではなく、一定の間隔でピクセルをスキップします (たとえば、10 番目のピクセルごとに処理します)。処理された各ピクセルのグレースケール値は、ドットのサイズを決定するために使用されます (たとえば、グレースケール値 100 は特定のドット サイズに対応します)。これらのドットは、元の画像の色情報を使用して、元の画像の空のコピー上に描画されます。要約すると、元のピクセルの色情報に基づいてさまざまなサイズのドットが描画されるイメージ コピーを作成します (図 2 を参照)。

Making a simple pointillism painting using OpenCv.
図 2: ドットを描画するには、元の画像のピクセルの色情報が使用されます。ドットのサイズを決定するには、元の画像のグレースケール バージョンが使用されます。

以下にコードがあり、考えられる結果を 図 3 に示します。

import numpy as np
import cv2

# load an image; image has to be in working directory when giving no path information 
img = cv2.imread('FlowerPower.jpg',cv2.IMREAD_UNCHANGED)
# show the dimensions of the image array
print(img.shape)

# choose a resizing factor for the whole image; to depict it on computer screen
resizing = .2
#convert original image to greyscale image
img_grey = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# make a copy of the orignal image 
img_output = img.copy()

# make a white canvas by assigning the color white (255,255, 255) to each pixel
# [:,:] covers all values of the first and second array dimension
img_output[:,:] = [255,255,255] # or with black [0,0,0] or any other color

# Settings for looping over the image
step_width = 40 # steps of loop; here: every 30th pixel
# - 1 fills circle that is drawn onto output image; positive value define
# line thickness of circle
thickness = -1 
perc = .2 # size factor for drawing circles/dots onto output image

# for loops running over the first two dimensions of the array (width and height) 
# step_width defines which pixels are included
for i in range(2,  img.shape[0] - step_width,  step_width):
    for u in range(2,  img.shape[1] - step_width,  step_width):        
        # radius (dot size) is based on the value of greyscale version of original image
        # at the current index; e.g., pixel at i = 10, u = 30 might have 123
        # perc variable modifies dot size 
        radius = int((255-img_grey[i,u])*perc) +1 
        if radius 



<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173272628418625.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Making a simple pointillism painting using OpenCv."><br>
<em>図 3: 右側には元のイメージが表示され、左側にはここで示されているコードに基づく点線バージョンが表示されます。</em></p>

<p>私が包括的な方法でコードを提示し、誰かがそれを役に立つと思ってくれれば幸いです。よかったら遊んでみてください。円を長方形に置き換え、異なるサイズの円を選択し、ループのステップ幅などの値を変更して、何が起こるかを確認してください。 </p>


          

            
        

以上がOpenCvを使用して簡単な点描絵画を作成します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

正規表現を使用して、最初の閉じたタグと停止に一致する方法は?正規表現を使用して、最初の閉じたタグと停止に一致する方法は?Apr 02, 2025 am 07:06 AM

正規表現を使用して、最初の閉じたタグと停止に一致する方法は? HTMLまたは他のマークアップ言語を扱う場合、しばしば正規表現が必要です...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール