>  기사  >  백엔드 개발  >  Python 이미지 처리의 기본과 OpenCV의 입문 기능

Python 이미지 처리의 기본과 OpenCV의 입문 기능

不言
不言원래의
2018-09-08 17:28:143394검색

이 글은 Python 이미지 처리의 기본과 OpenCV의 소개 기능을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 이미지의 기본 지식

이미지는 픽셀, 즉 이미지 내의 작은 사각형으로 구성됩니다. 이러한 작은 사각형은 명확한 위치와 할당된 색상 값을 가지며, 이러한 작은 사각형은 사각형의 색상과 위치에 따라 결정됩니다. 이미지가 어떻게 나타나는지. 픽셀은 이미지의 가장 작은 단위입니다. 각 비트맵 이미지에는 화면의 이미지 크기를 결정하는 특정 수의 픽셀이 포함되어 있습니다.

Python 이미지 처리의 기본과 OpenCV의 입문 기능

이미지에는 일반적으로 바이너리 이미지, 회색조 이미지 및 컬러 이미지가 포함됩니다.


Python 이미지 처리의 기본과 OpenCV의 입문 기능


1. 바이너리 이미지
바이너리 이미지의 모든 점은 검은색 또는 흰색, 흰색(픽셀은 255) 또는 검은색(픽셀은 0)입니다. 회색조 이미지를 이진 이미지로 변환하는 프로세스는 순차적 순회 판단에 의해 구현되는 경우가 많습니다. 픽셀이 127보다 크면 255로 설정되고, 그렇지 않으면 0으로 설정됩니다.


Python 이미지 처리의 기본과 OpenCV의 입문 기능

2. 그레이스케일 이미지
그레이스케일 이미지에는 흑백 외에도 그레이스케일을 256가지 색상으로 나누어서 이미지가 더욱 선명해 보입니다. 컬러 이미지를 회색조 이미지로 변환하는 것은 이미지 처리를 위한 가장 기본적인 전처리 작업이며 일반적으로 다음 방법을 포함합니다:
(1) 부동 소수점 알고리즘: 회색=R*0.3+G*0.59+B*0.11
(2) 정수 방법 : 회색=(R*30+G*59+B*11)/100
(3) 이동 방법: 회색=(R*28+G*151+B*77)>>8
(4) 평균 방법: 회색=(R+G+B)/3; (이 프로그램은 알고리즘을 사용합니다)
(5) 녹색만 사용: 회색=G
(6) 가중 평균 알고리즘: 빛의 밝기에 따라 특성, 공식 : R=G=B=R*0.299+G*0.587+B0.144

위 방법 중 하나로 Gray를 얻은 후 원래 RGB(R, G, B)에 R, G를 추가하면 B가 균일하게 대체됩니다. 회색을 사용하여 새로운 색상 RGB(회색, 회색, 회색)를 형성합니다. 이를 사용하여 원래 RGB(R, G, B)를 대체하여 회색조 이미지를 형성합니다. 컬러 이미지를 회색조 이미지로 변환하려면 픽셀 매트릭스의 RGB 값을 변경합니다.

Python 이미지 처리의 기본과 OpenCV의 입문 기능

3. 컬러 이미지
컬러 이미지는 RGB 이미지입니다. RGB는 빨간색, 녹색, 파란색의 세 가지 기본 색상을 나타냅니다. 컴퓨터의 모든 색상은 세 가지 기본 색상의 서로 다른 비율로 구성됩니다. 즉, 세 가지 색상 채널입니다.


Python 이미지 처리의 기본과 OpenCV의 입문 기능


2. OpenCV 이미지 읽기 및 쓰기

이 글에서는 주로 Python2.7과 OpenCV를 사용하여 설명합니다. 먼저 "pip install opencv-python"을 호출하여 OpenCV 라이브러리를 설치합니다. 아래 그림:

Python 이미지 처리의 기본과 OpenCV의 입문 기능

1. 이미지를 읽어보세요
OpenCV는 주로 다음 함수를 호출하여 이미지를 읽습니다:

img = cv2.imread(파일 이름, [, 매개변수])
매개변수 (1) cv2.IMREAD_UNCHANGED (이미지 불변)
매개변수 (2) cv2.IMREAD_GRAYSCALE (회색조 이미지)
매개변수 (3) cv2.IMREAD_COLOR (컬러 이미지 읽기)
매개변수(4) cv2.COLOR_BGR2RGB(이미지 채널 BGR을 RGB로 변환)

2. 이미지 표시
이미지 호출 기능은 다음과 같습니다.

cv2.imshow(창 이름, 이미지 이름)

3.
호출 기능은 다음과 같습니다:

cv2.waitKey(delay)
키보드 바인딩 기능에는 대기 시간(밀리초)을 나타내는 매개변수가 하나 있습니다. 키보드에서 입력이 있는지 확인하기 위해 특정 시간(밀리초) 동안 대기하며 반환 값은 ASCII 값입니다. 매개변수가 0이면 키보드 입력을 무한정 기다리는 것을 의미하고, 매개변수 >0은 지연 밀리초를 기다리는 것을 의미하고, 매개변수

4. 모든 창 삭제
다음과 같이 함수를 호출하세요:

cv2.destroyAllWindows() 모든 창 삭제
cv2.destroyWindows()는 지정된 창을 삭제합니다

5. 그림 쓰기
호출 함수는 다음과 같습니다.

retval = cv2.imwrite(파일 주소, 파일 이름)

다음 코드는 그림을 읽고 표시합니다. 저장합니다.

# -*- 
coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg")
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

출력 결과는 아래 그림과 같으며 폴더에 "testyxz.jpg"라는 이름의 이미지가 저장됩니다.

Python 이미지 처리의 기본과 OpenCV의 입문 기능


코드에 watiKey(0) 함수가 없으면 실행 결과는 아래와 같습니다.

Python 이미지 처리의 기본과 OpenCV의 입문 기능

同时
可以对代码进行升级,如下所示:

#无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()

三.OpenCV像素处理

1.读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。

灰度图像:返回值 = 图像(位置参数)
 eg: test=img[88,42]  
 彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
 eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]

2.修改图像
修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。

灰度图像:
 img[88,142] = 255
 彩色图像:
 img[88,142, 0] = 255
 img[88,142, 1] = 255
 img[88,142, 2] = 255
 彩色图像:方法二
 img[88,142] = [255, 255, 255]

下面代码是获取像素及修改的操作。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
test = img[88,142]print test
img[88,142] = [255, 255, 255]print test
#分别获取BGR通道像素
blue = img[88,142,0]print blue
green = img[88,142,1]print green
red = img[88,142,2]print red
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下所示:
[158 107  64]
[255 255 255]
255
255
255

下面代码是将行为100到200、列150到250的像素区域设置为白色。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
#该区域设置为白色
img[100:200, 150:250] = [255,255,255]
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

运行结果如下图所示:

Python 이미지 처리의 기본과 OpenCV의 입문 기능

相关推荐:

Python编程中使用Pillow来处理图像的基础教程

Python零基础入门之八lambda的表达式和filter、map内置函数

Python基于opencv的图像压缩算法实例分析

위 내용은 Python 이미지 처리의 기본과 OpenCV의 입문 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.