±à¼ÍƼö: |
±¾ÎÄʹÓÃOpenCV¼ò½é£¬OpencvµÄ°²×°¡¢Í¼ÏñÑÕɫģÐ͵Äת»»ÓëͼÐλæÖƵÈÏà¹ØÄÚÈÝ£¬ÏêÇéÇë¿´ÏÂÎÄ¡£
±¾ÎÄÀ´×ÔÓÚÔÆ+ÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
¼ÆËã»úÊÓ¾õÊÇÈ˹¤ÖÇÄÜ×îÈÈÃŵÄÓ¦ÓÃÁìÓòÖ®Ò»¡£È˹¤ÖÇÄܼ¼ÊõÍÆ¶¯ÁËÆû³µ×Ô¶¯¼ÝÊ»¡¢»úÆ÷ÈËÒÔ¼°¸÷ÖÖÕÕÆ¬´¦ÀíÀàÈí¼þµÄ¾Þ´ó·¢Õ¹¡£Ä¿±ê¼ì²â¼¼ÊõÒ²ÔÚÎȲ½Íƽø¡£Éú³É¶Ô¿¹ÍøÂ磨GANs£©Í¬ÑùÒ²ÊÇÈËÃÇ×î½ü±È½Ï¹Ø×¢µÄÒ»¸öÎÊÌâ¡£ÕâЩ¶¼ÔÚÏòÎÒÃÇչʾδÀ´¼ÆËã»úÊÓ¾õÁìÓòµÄ·¢Õ¹Ç°¾°ÊǶàôµÄ²»¿ÉÏÞÁ¿¡£
ÈÃÎÒÃÇÒ»ÆðµÇÉÏÈ˹¤ÖÇÄÜ·¢Õ¹µÄ¸ßËÙÁгµ¡£´Ó±¾ÎÄ¿ªÊ¼£¬ÎÒÃǽ«ÓÐһϵÁйØÓÚͼÏñ´¦ÀíºÍÄ¿±ê¼ì²â»ù´¡ÖªÊ¶µÄ½Ì³Ì¡£±¾ÆªÊÇOpenCVÈëÃŽ̵̳ÚÒ»²¿·Ö£¬ÍêÕûµÄϵÁн̳ÌÈçÏ£º
1. Àí½âÑÕɫģÐÍÓëÔÚͼÏñÉÏ»æÖÆÍ¼ÐΣ¨Í¼Ïñ´¦Àí»ù±¾²Ù×÷£©¡£
2. »ù±¾µÄͼÏñ´¦ÀíÓë¹ýÂË¡£
3. ´ÓÌØÕ÷¼ì²âµ½ÈËÁ³¼ì²â£¨TBU£©
±¾ÏµÁеĵÚÒ»²¿·Ö½«´ÓOpencvµÄ°²×°£¬½áºÏ´úÂëʵս½²½âÑÕɫģÐÍÓëͼÐλæÖƽ²Æð¡£±¾½Ì³ÌµÄÍêÕû´úÂëÒѾ·ÅÔÚGithubÉÏ£¬·½±ã´ó¼ÒʹÓá£
Ò»¡¢OpenCV¼ò½é
ͼÏñ´¦ÀíÊÇÖ¸¶ÔͼÏñÖ´ÐÐһЩ²Ù×÷ÒÔ´ïµ½Ô¤ÆÚЧ¹ûµÄ¹ý³Ì¡£¿ÉÒÔÀà±ÈÊý¾Ý·ÖÎö¹¤×÷£¬ÔÚÊý¾Ý·ÖÎöʱÎÒÃÇÐèÒª×öһЩÊý¾ÝÔ¤´¦ºÍÌØÕ÷¹¤³Ì¡£Í¼Ïñ´¦ÀíÒ²ÊÇÒ»ÑùµÄ¡£ÎÒÃÇͨ¹ýͼÏñ´¦ÀíÀ´´¦ÀíͼƬ´Ó¶ø¿ÉÒÔ´ÓÖÐÌáÈ¡´¦Ò»Ð©¸ü¼ÓÓÐÓõÄÌØÕ÷¡£ÎÒÃÇ¿ÉÒÔͨ¹ýͼÏñ´¦Àí¼õÉÙͼÏñÔëÉù£¬µ÷ÕûͼÏñÁÁ¶È¡¢ÑÕÉ«»òÕ߶Աȶȵȵȡ£ÏëÒª½øÒ»²½ÏµÍ³Á˽âͼÏñ´¦Àí»ù´¡ÖªÊ¶£¬²Î¿´£¨https://www.youtube.com/watch?v=QMLbTEQJCaI£©¡£
OpenCVÊÇOpen Source Computer VisionµÄËõд£¬ÓÉÓ¢ÌØ¶û¹«Ë¾ÓÚ1999ÄêÍÆ³ö¡£Ëü×î³õÊÇÓÃC/
C++±àдµÄ£¬ËùÒÔÄã¿ÉÄܻῴµ½¸ü¶àÓÃCÓïÑÔ¶ø²»ÊÇPython±àдµÄ½Ì³Ì¡£µ«ÏÖÔÚËüÔÚPythonÖÐÒ²±»¹ã·ºÓÃÓÚ¼ÆËã»úÊÓ¾õ¡£Ê×ÏÈ£¬ÈÃÎÒÃÇΪʹÓÃOpenCVÅäÖû·¾³¡£°²×°¹ý³ÌÈçÏ£¬Ïêϸ°²×°ÃèÊö²Î¿´£¨https://pypi.org/project/opencv-python/£©¡£
pip install opencv-python==3.4.2
pip install opencv-contrib-python==3.3.1 |
°²×°Íê³Éºó£¬¿ÉÒÔͨ¹ýÏ·½Á½ÌõÃüÁî²âÊÔÆäÊÇ·ñÕý³£¹¤×÷¡£Èç¹ûûÓÐÈκα¨´í£¬ÄÇô¾Í¿ÉÒÔ¿ªÊ¼Ê¹ÓÃÁË£¡
import cv2
cv2.__version__ |
ÎÒÃÇʹÓÃÓÃOpenCV×öµÄµÚÒ»²½¾ÍÊǵ¼ÈëÒ»¸öͼÏñ£¬ÈçÏ·½Ëùʾ¡£
import numpy
as np
import matplotlib.pyplot as plt
%matplotlib inline
# Import the image
img = cv2.imread('burano.jpg')
plt.imshow(img) |

ÉÏͼÊÇÔÚÒâ´óÀû×îÃÀÀöµÄµºÓìÖ®Ò»²¼ÀŵËùÅÄÉãµÄ¡£Èç¹ûÄãÈ¥¹ýÕâ¸öµØ·½£¬Äã¿ÉÄÜ»á×¢Òâµ½Õâ·ùͼÀïÓÐЩ²»Í¬¡£ÕâȷʵºÍÎÒÃÇͨ³£¿´µ½µÄ²¼ÀŵµÄÕÕÆ¬Óе㲻ͬ¡£ÕâÊÇÒòΪOpenCVÖÐÑÕɫģʽµÄĬÈÏÉèÖÃ˳ÐòÊÇBGR£¬²»Í¬ÓëMatplotlib¡£Òò´Ë£¬ÒªÔÚRGBģʽϲ鿴ͼÏñ£¬ÎÒÃÇÐèÒª½«Ëü´ÓBGRת»»ÎªRGB£¬ÈçÏÂËùʾ¡£
# Convert the
image into RGB
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
|
ÕâÕÅͼ¾ÍÊÇÕæÕýµÄ²¼ÀŵÁË£¬¶àôÃÀÀö£¡
¶þ¡¢²»Ö»ÊÇRGB
ÎÒÃÇÔÙÀ´Ì¸Ì¸ÑÕɫģÐÍ¡£ÑÕɫģÐÍÊÇÒ»¸öʹÓÃÔÉ«¹¹½¨È«ÏµÁÐÑÕÉ«µÄϵͳ¡£ÕâÀïÏȽéÉÜÕâÁ½ÖÖ²»Í¬µÄÑÕɫģÐÍ£º¡°¼ÓɫģÐÍ¡±ºÍ¡±¼õɫģÐÍ¡±¡£¼ÓɫģÐÍʹÓùâ´ú±í¼ÆËã»úÆÁÄ»ÉϵÄÑÕÉ«£¬¶ø¼õɫģÐÍʹÓÃīˮÔÚÖ½ÉÏ´òÓ¡ÕâЩÊý×ÖͼÏñ¡£Ç°ÕßµÄÔÉ«ÓɺìÉ«¡¢ÂÌÉ«ºÍÀ¶É«(RGB)×é³É£¬ºóÕßÓÐÀ¶É«¡¢Æ·ºì¡¢»ÆÉ«ºÍºÚÉ«(CMYK)ËÄÖÖÔÉ«×é³É¡£ÎÒÃÇÔÚͼÏñÉÏ¿´µ½µÄËùÓÐÆäËûÑÕÉ«¶¼ÊÇÓÉÕâЩÔÉ«×éºÏ»ò»ìºÏ¶ø³ÉµÄ¡£ËùÒÔµ±·Ö±ðÓÃRGB¡¢CMYK±íʾһÕÅͼÏñʱ£¬Í¼Ïñ¿ÉÒÔÓÐ×ÅÂÔ΢²»Í¬µØ±í´ï¡£ÈçÏÂͼËùʾ¡£

ÈÕ³£Éú»îÖмûµ½×î¶àµÄ¾ÍÊÇÕâÁ½ÖÖÑÕɫģÐÍ¡£È»¶ø£¬ÔÚ²ÊɫģÐ͵ÄÊÀ½çÀï²»½ö½öÖ»ÓÐÕâÁ½ÖÖÑÕɫģÐÍ¡£ÖÚ¶àµÄÑÕɫģÐÍÖУ¬»Ò¶È£¨grayscale£©¡¢HSVºÍHLSÒ²ÊÇÄã»áÔÚ¼ÆËã»úÊÓ¾õÈÎÎñÖо³£¿´µ½µÄ¡£
»Ò¶È£¨grayscale£©ºÜ¼òµ¥¡£Ëüͨ¹ýºÚ°×µÄÇ¿¶ÈÀ´±íʾͼÏñºÍÐÎ̬£¬ÕâÒ²Òâζ×ÅËüÖ»ÓÐÒ»¸öͨµÀ¡£Òª²é¿´»Ò¶ÈͼÏñ£¬ÎÒÃÇÐèÒª½«ÑÕɫģÐÍת»»Îª»ÒÉ«£¬¾ÍÏñÇ°Ãæ¶ÔBGRͼÏñËù×öµÄ²Ù×÷ÄÇÑù¡£
# Convert the
image into gray scale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img_gray, cmap = 'gray')
|
ʵ¼ÊÉÏ£¬RGBͼÏñÊÇÓÉÈý¸öͨµÀµþ¼Ó¶ø³ÉµÄ£ºR, G, b¡£ËùÒÔÈç¹ûÎÒÃǰÑÿ¸öͨµÀÒ»¸öÒ»¸öµÄÃè»æ³öÀ´£¬ÎÒÃǾͿÉÒÔÀí½âÑÕɫͨµÀÊÇÈçºÎ¹¹³ÉµÄÁË£¡
# Plot the three
channels of the image
fig, axs = plt.subplots(nrows = 1, ncols = 3,figsize
= (20, 20))
for i in range(0, 3):
ax =axs[i]
ax.imshow(img_rgb[:, :, i], cmap = 'gray') plt.show()
|

¹Û²ìÉÏÃæµÄͼƬ¡£ÕâÈý·ùͼÏñչʾÁËÿ¸öͨµÀÊÇÈçºÎ×é³ÉµÄ¡£ÔÚRͨµÀͼÖУ¬ºìÉ«±¥ºÍ¶È¸ßµÄ²¿·Ö¿´ÆðÀ´Êǰ×É«µÄ¡£ÕâÊÇÓÉÓÚºìÉ«²¿·ÖÖеÄÖµ½Ó½ü255¡£ÔÚ»Ò¶ÈģʽÏ£¬ÖµÔ½¸ßÑÕÉ«¾ÍÔ½°×¡£Ä㻹¿ÉÒÔʹÓÃG»òBͨµÀÀ´¼ì²éÕâÒ»µã£¬²¢±È½ÏijЩ²¿·ÖÖ®¼äµÄ²îÒì¡£
HSVºÍHLSÓÐһЩ²»Í¬¡£ÕýÈçÔÚÉÏͼ¿´µ½µÄÄÇÑù£¬ËûÃÇÓÐÒ»¸öÈýάµÄ±í´ï£¬¸üÀàËÆÓÚÈËÀàµÄ¸ÐÖª·½Ê½¡£HSV´ú±íÉ«µ÷¡¢±¥ºÍ¶ÈºÍɫֵ¡£HSL´ú±íÉ«µ÷¡¢±¥ºÍ¶ÈºÍÁÁ¶È¡£HSVµÄÖÐÖáÊÇɫֵ£¬HSLµÄÖÐÖáÊǹâÁ¿¡£ÑØ×ÅÖÐÐÄÖáµÄ½Ç¶È£¬ÓÐÉ«µ÷ºÍʵ¼ÊµÄÑÕÉ«¡£ÓëÖÐÐÄÖáµÄ¾àÀëÊôÓÚ±¥ºÍ¶È¡£×ª»»ÑÕɫģÐ͵ķ½·¨ÈçÏ¡£
# Transform the
image into HSV and HLS models
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
# Plot the converted images
fig, (ax1, ax2) = plt.subplots(nrows = 1, ncols
=2, figsize = (20, 20))
ax1.imshow(img_hsv)
ax2.imshow(img_hls) plt.show() |

µ«ÊÇΪʲôҪ±ä»»ÑÕÉ«£¿ÕâЩÓÐʲôÓô¦£¿Ò»¸öºÜµäÐ͵ÄÀý×Ó--³µµÀ¼ì²â¡£¹Û²ìÏÂͼ£¬²»Í¬ÑÕɫģʽϵijµµÀÏß¡£ÔÚ¼ÆËã»úÊÓ¾õÈÎÎñÖУ¬ÎÒÃÇÀûÓÃÑÚĤ£¨masking£©½øÐжàɫģʽת»»¡£Èç¹ûÄãÏëÁ˽â¸ü¶à¹ØÓÚͼÏñ´¦ÀíÔÚ³µµÀ¼ì²âÈÎÎñÖеÄÓ¦Ó㬿ɲο´ÕâÆªÎÄÕ¡£

ͼÏñ´¦ÀíÊǾÍÊǶÔͼÏñÊý¾Ý½øÐÐÔ¤´¦Àí¡£Ëü¿ÉÒÔ¼õÉÙÔëÒô£¬ÌáÈ¡ÓÐÓõÄÑÕɫģÐÍ£¬´Ó¶ø¼ò»¯·ÖÀàºÍ¼ì²âÈÎÎñ¡£Òò´Ë£¬ËùÓÐÉÏÊö¼¼Êõ£¬°üÀ¨ÎÒÃÇÉÔºó½«ÌÖÂ۵ļ¼Êõ£¬¶¼ÊÇΪÁ˰ïÖúÄ£Ð͸üÈÝÒ×µØÊµÏÖ¼ì²â¡£
Èý¡¢ÔÚͼÏñÉÏ»æÖÆÍ¼ÐÎ
ÈÃÎÒÃÇÔÚͼÏñÉÏÌí¼ÓһЩͼÐΡ£ÔÛÃÇÕâ´Î´úÂëʾÀýÖÐʹÓõÄͼƬÀ´×Ô°ÍÀè¡°°®µÄǽ¡±¡£ÉÏÃæÓø÷ÖÖ¹ú¼ÊÓïÑÔдÂúÁË¡°ÎÒ°®Ä㡱¡£ÎÒÃÇÒª×öµÄÊÇÕÒµ½ÓïÑÔÖеĵ¥´Ê²¢ÓþØÐαê¼ÇËüÃÇ¡£¼ÙÈçÎÒÃÇÒª¶¨Î»º«Óï°æ±¾¡°ÎÒ°®Ä㡱¡£Ê×ÏÈ£¬¸´ÖÆÔʼͼÏñ²¢ÓÃcv2.rectangle()º¯Êý»æÖÆÒ»¸ö¾ØÐΣ¬Í¬Ê±¸ø³ö×óÉϽǺÍÓÒϽǵÄ×ø±êÖµ¡£ÈçÏ£º
# Copy the image
img_copy = img.copy()
# Draw a rectangle
cv2.rectangle(img_copy, pt1 = (800, 470), pt2
=(980, 530),
color = (255, 0, 0), thickness = 5) plt.imshow(img_copy)
|

ʹÓÃcv2.circle()º¯Êý£¬»Ò»¸öÔ²£¬È¦³ö¸ü¶àµÄº«Óïµ¥´Ê¡£ÎÒÃÇÐèÒªÖ¸¶¨ËüµÄÔ²ÐĵĵãºÍ°ë¾¶µÄ³¤¶È¡£
# Draw a circle
cv2.circle(img_copy, center = (950, 50), radius
=50,
color = (0, 0, 255), thickness = 5)
plt.imshow(img_copy)£¬
|

ÎÒÃÇ»¹¿ÉÒÔ½«Îı¾Êý¾Ý·ÅÔÚͼÏñÉÏ¡£Ê¹ÓÃcv2.putText()º¯Êý£¬ÎÒÃÇ¿ÉÒÔÖ¸¶¨Îı¾µÄλÖá¢×ÖÌåÑùʽºÍ´óС¡£
# Add text
cv2.putText(img_copy, text = "the Wall ofLove",
org = (250, 250),
fontFace = cv2.FONT_HERSHEY_DUPLEX,
fontScale = 2,
color = (0, 255, 0),
thickness = 2,
lineType = cv2.LINE_AA)
plt.imshow(img_copy) |
ËÄ¡¢²»Ö¹ÊÇͼÏñ
ÔÚÉϱߵĽéÉÜÖУ¬ÎÒÃÇѡȡÒâ´óÀûºÍ·¨¹úµÄÁ½Õŷ羰ͼ×÷ΪʾÀý¡£¼ÙÈ磬ÎÒÃÇÏëÒª»ÕŵØÍ¼°ÑÕâЩµØ·½±ê³öÀ´¡£ÄÇô£¬Ê×ÏÈÎÒÃÇÒª´´½¨Ò»¸ö´°¿Ú²¢»æÖÆÍ¼ÐΡ£²»Ò»ÑùµÄÊÇÕâÀï²»ÊÇͨ¹ýÖ¸¶¨µã»æÖÆÍ¼ÐζøÊÇͨ¹ýµã»÷ÏìÓ¦¡£ÏÈÊÔÊÔ»æÖÆÔ²È¦¡£Ê×ÏÈ´´½¨Ò»¸öº¯Êý£¬Ëü½«ÓÃλÖúÍÊó±êµã»÷µÄÊý¾Ý»æÖÆÒ»¸öԲȦ¡£
# Step 1. Define
callback function
def draw_circle(event, x, y, flags, param):
ifevent == cv2.EVENT_LBUTTONDOWN:
cv2.circle(img, center = (x, y), radius = 5,
color = (87, 184, 237), thickness = -1)
elifevent == cv2.EVENT_RBUTTONDOWN:
cv2.circle(img, center = (x, y), radius = 10,
color = (87, 184, 237),thickness = 1)
|
µ±°´ÏÂÊó±êµã»÷°´Å¥Ê±£¬Ê¹ÓÃcv2.EVENT_LBUTTONDOWN»ò
cv2.EVENT_RBUTTONDOWN¼Ç¼λÖÃÊý¾Ý¡£°ÑÊó±êµÄλÖÃÉèÖÃΪԲÐÄ(x,
y)£¬²¢»æÖÆÔ²È¦¡£
# Step 2. Call
the window
img = cv2.imread('map.png')
cv2.namedWindow(winname = 'my_drawing')
cv2.setMouseCallback('my_drawing', draw_circle)
|
ÉèÖÃÒ»¸öµØÍ¼×÷Ϊ´°¿ÚµÄ±³¾°£¬²¢½«´°¿ÚÃüÃûΪmy_drawing¡£Ê¹ÓÃcv2.setMouseCallback()º¯Êý£¬ÔÚ´°¿ÚºÍÎÒÃÇÔÚ²½Öè1Öд´½¨µÄº¯Êýdraw_circleÖ®¼ä½¨Á¢ÁËÒ»¸öÁ¬½Ó¡£
# Step 3. Execution
while True:
cv2.imshow('my_drawing',img)
ifcv2.waitKey(10) & 0xFF == 27:
break
cv2.destroyAllWindows()
|
ÏÖÔÚÎÒÃÇʹÓÃwhileÑ»·Ö´Ðд°¿Ú¡£if×Ó¾äµÄÖ´ÐÐÌõ¼þÊÇ£¬µ±ÎÒÃǰ´Ï¼üÅÌÉϵÄESCʱ£¬½«´°¿ÚÉèÖÃΪ¹Ø±Õ¡£

½ÓÏÂÀ´³¢ÊÔ»æÖÆÒ»¸ö¾ØÐΡ£ÓÉÓÚÔÚcv2.rectangle()º¯ÊýÖУ¬¾ØÐÎÐèÒªÁ½¸öµãÀ´±íʾpt1ºÍpt2£¬ËùÒÔÎÒÃÇÐèÒªÒ»¸ö¶îÍâµÄ²½ÖèÀ´ÉèÖõÚÒ»¸öµã»÷µãΪpt1£¬×îºóÒ»¸öµã»÷µãΪpt2¡£ÎÒÃÇÒªÓÃcv2.EVENT_MOUSEMOVEºÍcv2.EVENT_LBUTTONUPÀ´¼ì²âÊó±êµÄÒÆ¶¯¡£
ÎÒÃÇÊ×ÏȽ«drawing = False¶¨ÒåΪĬÈÏÖµ¡£µ±°´ÏÂ×ó¼üʱ£¬»æÍ¼±äΪtrue£¬ÎÒÃǽ«µÚÒ»¸öλÖÃÉèΪpt1¡£Èç¹ûÕýÔÚ»æÍ¼£¬Ëü½«ÒÔµ±Ç°µãΪpt2£¬²¢ÔÚÒÆ¶¯Êó±êʱ¼ÌÐø»æÖƾØÐΡ£¾ÍÏñÊý×ÖÖØµþÒ»Ñù¡£µ±×ó¼ü´ò¿ªÊ±£¬»æÍ¼±äΪfalse£¬Ëü½«Êó±êµÄ×îºóÒ»¸öλÖÃ×÷Ϊpt2µÄ×îºóÒ»¸öµã¡£
# Initialization
drawing = False
ix = -1
iy = -1
# create a drawing function
def draw_rectangle(event, x, y, flags, params):
globalix, iy, drawing
ifevent == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x, y
elifevent == cv2.EVENT_MOUSEMOVE:
ifdrawing == True:
cv2.rectangle(img, pt1=(ix, iy), pt2=(x, y),
color = (87, 184,237), thickness = -1)
elifevent == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img, pt1=(ix, iy), pt2=(x, y),
color = (87, 184, 237),thickness = -1)
|
ÔÚ²½Öè1Öн«draw_circleº¯ÊýÌæ»»Îªdraw_rectangle¡£Çë²»ÒªÍü¼ÇÔڻص÷º¯Êýcv2.setMouseCallback()ÖнøÐиü¸Ä¡£Òò´Ë£¬Õû¸ö´úÂë½Å±¾½«ÈçÏÂËùʾ¡£
import cv2
import numpy as np # Step 1. Define callback function
drawing = False
ix = -1
iy = -1
def draw_rectangle(event, x, y, flags, params):
globalix, iy, drawing ifevent == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x, y
elifevent == cv2.EVENT_MOUSEMOVE:
ifdrawing == True:
cv2.rectangle(img, pt1 = (ix, iy), pt2 = (x,
y),
color = (87, 184,237), thickness = -1) elifevent == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.rectangle(img, pt1 = (ix, iy), pt2 = (x,
y),
color = (87, 184, 237),thickness = -1)
# Step 2. Call the window
img = cv2.imread('map.png') cv2.namedWindow(winname = 'my_drawing')
cv2.setMouseCallback('my_drawing',draw_rectangle) # Step 3. Execution
while True:
cv2.imshow('my_drawing', img)
ifcv2.waitKey(10) & 0xFF == 27:
break cv2.destroyAllWindows() |
Îå¡¢×ܽáÓëÕ¹Íû
±¾ÆªÎÄÕ½éÉÜÁËOpencvµÄ°²×°¡¢Í¼ÏñÑÕɫģÐ͵Äת»»ÓëͼÐλæÖÆ¡£Ï´Σ¬½«½éÉÜͼÏñÂÖÀªÌá³öÓëÄ¿±ê¼ì²âµÈ¼¼Êõ¡£¾´ÇëÆÚ´ý£¡ |