官术网_书友最值得收藏!

  • OpenCV 4 with Python Blueprints
  • Dr. Menua Gevorgyan Arsen Mamikonyan Michael Beyeler
  • 344字
  • 2021-06-24 16:49:57

Creating a black-and-white pencil sketch

In order to obtain a pencil sketch (that is, a black-and-white drawing) of the camera frame, we will make use of two image-blending techniques, known as dodging and burning. These terms refer to techniques employed during the printing process in traditional photography; here, photographers would manipulate the exposure time of a certain area of a darkroom print in order to lighten or darken it. Dodging lightens an image, whereas burning darkens it. Areas that were not supposed to undergo changes were protected with a mask.

Today, modern image editing programs, such as Photoshop and Gimp, offer ways to mimic these effects in digital images. For example, masks are still used to mimic the effect of changing the exposure time of an image, wherein areas of a mask with relatively intense values will expose the image more, thus lightening the image. OpenCV does not offer a native function to implement these techniques; however, with a little insight and a few tricks, we will arrive at our own efficient implementation that can be used to produce a beautiful pencil sketch effect.

If you search on the internet, you might stumble upon the following common procedure to achieve a pencil sketch from an RGB (red, green, and blue) color image:

  1. First, convert the color image to grayscale.
  2. Then, invert the grayscale image to get a negative.
  3. Apply a Gaussian blur to the negative from step 2.
  4. Blend the grayscale image (from step 1) with the blurred negative (from step 3) by using color dodge.

Whereas steps 1 to 3 are straightforward, step 4 can be a little tricky. Let's get that one out of the way first.

OpenCV 3 came with a pencil sketch effect right out of the box. The cv2.pencilSketch function uses a domain filter introduced in the 2011 paper, Domain Transform for Edge-Aware Image and Video Processing, by Eduardo Gastal and Manuel Oliveira. However, for the purposes of this book, we will develop our own filter.

The next section shows you how to implement dodging and burning in OpenCV.

主站蜘蛛池模板: 亳州市| 赤水市| 广灵县| 佳木斯市| 阿勒泰市| 丹棱县| 郑州市| 横峰县| 北辰区| 密云县| 南涧| 蓬莱市| 千阳县| 姜堰市| 吉水县| 区。| 南宁市| 绵阳市| 微博| 会昌县| 大连市| 巍山| 苍梧县| 凌云县| 墨玉县| 阿荣旗| 鄂尔多斯市| 濉溪县| 沅江市| 铜川市| 汶上县| 连山| 临颍县| 樟树市| 斗六市| 广饶县| 湘乡市| 三门峡市| 宜州市| 枞阳县| 泸定县|